How to determine by reflection if a Method returns 'void'

I have a java.lang.reflect.Method object and I would like to know if it's return type is void.

I've checked the Javadocs and there is a getReturnType() method that returns a Class object. The thing is that they don't say what would be the return type if the method is void.

Thanks!

38672 次浏览
if( method.getReturnType().equals(Void.TYPE)){
out.println("It does");
}

Quick sample:

$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

It returns java.lang.Void.TYPE.

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

There is another, perhaps less conventional way:

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

method.getReturnType()==void.class     √


method.getReturnType()==Void.Type      √


method.getReturnType()==Void.class     X