代码之家  ›  专栏  ›  技术社区  ›  Pablo Fernandez

如何通过反射确定方法是否返回“void”

  •  64
  • Pablo Fernandez  · 技术社区  · 15 年前

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

    我查过了 Javadocs 还有一个 getReturnType() 返回类对象的方法。问题是,如果方法是空的,它们不会说返回类型是什么。

    谢谢!

    5 回复  |  直到 15 年前
        1
  •  101
  •   OscarRyz    15 年前
    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 
    
        2
  •  11
  •   Alexan Amani Kanu    7 年前
    method.getReturnType()==void.class     √
    
    method.getReturnType()==Void.Type      √
    
    method.getReturnType()==Void.class     X
    
        3
  •  9
  •   Tom Hawtin - tackline    15 年前

    method.getReturnType() 收益率 void.class / Void.TYPE .

        4
  •  7
  •   James Keesey    15 年前

    它返回 java.lang.Void.TYPE .

        5
  •  0
  •   Nom1fan    8 年前

    还有另一种可能不那么传统的方法:

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