web-dev-qa-db-fra.com

Comment déterminer par réflexion si une méthode retourne 'vide'

J'ai un objet Java.lang.reflect.Method et j'aimerais savoir si son type de retour est void

J'ai vérifié le Javadocs et il existe une méthode getReturnType() qui renvoie un objet Class. Le fait est qu'ils ne disent pas quel serait le type de retour si la méthode est vide.

Merci!

64
Pablo Fernandez
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 
101
OscarRyz
method.getReturnType()==void.class     √

method.getReturnType()==Void.Type      √

method.getReturnType()==Void.class     X
11
footman

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

9

Il retourne Java.lang.Void.TYPE.

7
James Keesey

Il existe un autre moyen, peut-être moins conventionnel: 

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

0
Nom1fan