2009-12-17 5 views

Répondre

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

échantillon rapide:

$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

Pour une raison quelconque avec java 6 je devais remplacer '' Void.TYPE' avec Void.class' sinon le chèque serait toujours échouer. Idées pourquoi? –

+1

@GiovanniBotta Void.TYPE est identique à void.class et représente le type primitif vide. Void.class représente le type de référence Void. Alors peut-être que votre méthode renvoie Void au lieu de void. – Bax

7

Il retourne java.lang.Void.TYPE.

9

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

0

Il y a une autre façon peut-être moins conventionnelle:

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

Je souhaite que plus de gens sur SO répondent avec des réponses aussi minimes et informatives. –

Questions connexes