2009-12-17 18 views

risposta

93
if(method.getReturnType().equals(Void.TYPE)){ 
    out.println("It does"); 
} 

campione rapida:

$cat X.java 

import java.lang.reflect.Method; 


public class X { 
    public static void main(String [] args) { 
     for(Method m : X.class.getMethods()) { 
      if(m.getReturnType().equals(Void.TYPE)){ 
       System.out.println(m.getName() + " returns void "); 
      } 
     } 
    } 

    public void hello(){} 
} 
$java X 
hello returns void 
main returns void 
wait returns void 
wait returns void 
wait returns void 
notify returns void 
notifyAll returns void 
+0

Per qualche ragione con Java 6 ho dovuto sostituire 'Void.TYPE' con' Void.class' altrimenti il ​​controllo sarebbe sempre fallire. Idee perché? –

+1

@GiovanniBotta Void.TYPE è uguale a void.class e rappresenta il tipo primitivo void. Void.class rappresenta il tipo di riferimento Void. Quindi forse il tuo metodo restituisce Void anziché void. – Bax

7

Riporta java.lang.Void.TYPE.

9

method.getReturnType() restituisce void.class/Void.TYPE.

0

C'è un altro modo forse meno convenzionale:

public boolean doesReturnVoid(Method method) { if (void.class.equals(method.getReturnType())) return true; }

3
method.getReturnType()==void.class  √ 

method.getReturnType()==Void.Type  √ 

method.getReturnType()==Void.class  X 
+1

Vorrei che più persone su SO rispondessero con risposte così minime e informative. –

Problemi correlati