Java 如何通过反射确定方法是否返回“void”
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/1924253/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to determine by reflection if a Method returns 'void'
提问by Pablo Fernandez
I have a java.lang.reflect.Methodobject and I would like to know if it's return type is void.
我有一个java.lang.reflect.Method对象,我想知道它的返回类型是否为void.
I've checked the Javadocsand 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.
我检查了Javadocs,有一个getReturnType()方法可以返回一个 Class 对象。问题是,如果方法为空,他们没有说明返回类型是什么。
Thanks!
谢谢!
采纳答案by OscarRyz
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
回答by James Keesey
It returns java.lang.Void.TYPE.
它返回java.lang.Void.TYPE。
回答by Tom Hawtin - tackline
method.getReturnType()returns void.class/Void.TYPE.
method.getReturnType()返回void.class/ Void.TYPE。
回答by Nom1fan
There is another, perhaps less conventional way:
还有另一种可能不太传统的方法:
public boolean doesReturnVoid(Method method) {
if (void.class.equals(method.getReturnType()))
return true;
}
public boolean doesReturnVoid(Method method) {
if (void.class.equals(method.getReturnType()))
return true;
}
回答by footman
method.getReturnType()==void.class √
method.getReturnType()==Void.Type √
method.getReturnType()==Void.class X

