【发布时间】:2023-03-18 04:01:02
【问题描述】:
我有一个java.lang.reflect.Method 对象,我想知道它的返回类型是否为void。
我检查了Javadocs 并且有一个getReturnType() 方法返回一个类对象。问题是,如果方法为 void,他们没有说明返回类型是什么。
谢谢!
【问题讨论】:
标签: java reflection methods
我有一个java.lang.reflect.Method 对象,我想知道它的返回类型是否为void。
我检查了Javadocs 并且有一个getReturnType() 方法返回一个类对象。问题是,如果方法为 void,他们没有说明返回类型是什么。
谢谢!
【问题讨论】:
标签: java reflection methods
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
【讨论】:
Void.TYPE 替换为 Void.class 否则检查将始终失败。想法为什么?
method.getReturnType()==void.class √
method.getReturnType()==Void.Type √
method.getReturnType()==Void.class X
【讨论】:
method.getReturnType() 返回void.class/Void.TYPE。
【讨论】:
它返回java.lang.Void.TYPE。
【讨论】:
还有另一种可能不太传统的方法:
public boolean doesReturnVoid(Method method) {
if (void.class.equals(method.getReturnType()))
return true;
}
【讨论】: