wake-up-neo.com

Wie man durch Nachdenken feststellen kann, ob eine Methode "void" zurückgibt

Ich habe ein Java.lang.reflect.Method-Objekt und würde gerne wissen, ob der Rückgabetyp void ist. 

Ich habe die Javadocs geprüft und es gibt eine getReturnType()-Methode, die ein Class-Objekt zurückgibt. Die Sache ist, dass sie nicht sagen, was der Rückgabetyp wäre, wenn die Methode ungültig ist.

Vielen Dank!

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

Schnelle probe:

$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() gibt void.class/Void.TYPE zurück.

Es gibt Java.lang.Void.TYPE zurück.

7
James Keesey

Es gibt einen anderen, vielleicht weniger konventionellen Weg: 

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

0
Nom1fan