web-dev-qa-db-ja.com

メソッドが 'void'を返すかどうかをリフレクションによって決定する方法

_Java.lang.reflect.Method_オブジェクトがあり、戻り型がvoidかどうかを知りたいです。

Javadocs をチェックしました。Classオブジェクトを返すgetReturnType()メソッドがあります。問題は、メソッドがvoidの場合、戻り値の型は何も言わないということです。

ありがとう!

66
Pablo Fernandez
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 
104
OscarRyz
method.getReturnType()==void.class     √

method.getReturnType()==Void.Type      √

method.getReturnType()==Void.class     X
13
footman

method.getReturnType()void.class/Void.TYPEを返します。

10

Java.lang.Void.TYPEを返します。

8
James Keesey

別の、おそらくあまり一般的ではない方法があります:

public boolean doesReturnVoid(Method method) { if (void.class.equals(method.getReturnType())) return true; }

0
Nom1fan