如何通过反射确定Method是否返回'void'

Pab*_*dez 68 java reflection methods

我有一个java.lang.reflect.Method对象,我想知道它是否是返回类型void.

我检查了Javadocs,并且有一个getReturnType()返回Class对象的方法.问题是,如果方法无效,他们不会说返回类型是什么.

谢谢!

Osc*_*Ryz 106

if( method.getReturnType().equals(Void.TYPE)){
    out.println("It does");
 }
Run Code Online (Sandbox Code Playgroud)

快速样品:

$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 
Run Code Online (Sandbox Code Playgroud)

  • @GiovanniBotta Void.TYPE与void.class相同,表示原始类型void.Void.class表示引用类型Void.所以也许你的方法返回Void而不是void. (2认同)

foo*_*man 15

method.getReturnType()==void.class     ?

method.getReturnType()==Void.Type      ?

method.getReturnType()==Void.class     X
Run Code Online (Sandbox Code Playgroud)

  • 我希望SO上有更多的人回答这么简单和内容丰富的答案. (4认同)

Tom*_*ine 10

method.getReturnType()返回void.class/ Void.TYPE.


Jam*_*sey 8

它回来了java.lang.Void.TYPE.