我有一個java.lang.reflect.Method
對象,我想知道它的返回類型是void
。如何通過反射來判斷一個方法是否返回'void'
我檢查了Javadocs,並且有一個返回Class對象的getReturnType()
方法。問題是如果方法無效,他們不會說什麼是返回類型。
謝謝!
我有一個java.lang.reflect.Method
對象,我想知道它的返回類型是void
。如何通過反射來判斷一個方法是否返回'void'
我檢查了Javadocs,並且有一個返回Class對象的getReturnType()
方法。問題是如果方法無效,他們不會說什麼是返回類型。
謝謝!
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
它返回java.lang.Void.TYPE
。
method.getReturnType()
返回void.class
/Void.TYPE
。
還有另一個,也許不那麼傳統的方式:
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
我希望更多的人對SO做出迴應,提供這樣的最小和信息答案。 – 2017-09-21 17:14:23
出於某種原因,與Java 6,我與'Void.class'否則檢查將始終以取代'Void.TYPE'失敗。想法爲什麼? – 2014-03-26 18:51:04
@GiovanniBotta Void.TYPE與void.class相同,代表原始類型void。 Void.class表示引用類型Void。所以也許你的方法返回void而不是void。 – Bax 2016-09-19 20:53:39