Как определить по отражению, если метод возвращает 'void'


у меня есть java.lang.reflect.Method объект и я хотел бы знать, если это тип возврата void.

Я проверил документации и getReturnType() метод, который возвращает объект класса. Дело в том, что они не говорят, какой будет тип возврата, если метод является пустым.

спасибо!

5 62

5 ответов:

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

быстрый пример:

$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 

method.getReturnType() возвращает void.class/Void.TYPE.

method.getReturnType()==void.class     √

method.getReturnType()==Void.Type      √

method.getReturnType()==Void.class     X

возвращает java.lang.Void.TYPE.

есть еще один, возможно, менее традиционный способ:

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