Как определить с помощью отражения, возвращает ли метод 'void' - PullRequest
66 голосов
/ 17 декабря 2009

У меня есть java.lang.reflect.Method объект, и я хотел бы знать, является ли его тип возвращаемого значения void.

Я проверил Javadocs , и есть метод getReturnType(), который возвращает объект Class. Дело в том, что они не говорят, какой будет тип возвращаемого значения, если метод void.

Спасибо!

Ответы [ 5 ]

104 голосов
/ 17 декабря 2009
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 
12 голосов
/ 05 июня 2017
method.getReturnType()==void.class     √

method.getReturnType()==Void.Type      √

method.getReturnType()==Void.class     X
10 голосов
/ 17 декабря 2009

method.getReturnType() возвращает void.class / Void.TYPE.

8 голосов
/ 17 декабря 2009

Возвращает java.lang.Void.TYPE.

0 голосов
/ 11 августа 2016

Существует другой, возможно, менее традиционный способ:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...