Подтвердить что ты не робот

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

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

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

Спасибо!

4b9b3361

Ответ 1

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 

Ответ 2

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

Ответ 3

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

Ответ 4

method.getReturnType()==void.class     √

method.getReturnType()==Void.Type      √

method.getReturnType()==Void.class     X

Ответ 5

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

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