Как определить путем отражения, если метод возвращает 'void'
У меня есть объект java.lang.reflect.Method
, и я хотел бы знать, если он возвращает тип void
.
Я проверил Javadocs и существует метод getReturnType()
, который возвращает объект класса. Дело в том, что они не говорят, каков будет тип возврата, если метод недействителен.
Спасибо!
Ответы
Ответ 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;
}