2009-12-17 111 views

回答

93
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 
+0

出於某種原因,與Java 6,我與'Void.class'否則檢查將始終以取代'Void.TYPE'失敗。想法爲什麼? – 2014-03-26 18:51:04

+1

@GiovanniBotta Void.TYPE與void.class相同,代表原始類型void。 Void.class表示引用類型Void。所以也許你的方法返回void而不是void。 – Bax 2016-09-19 20:53:39

7

它返回java.lang.Void.TYPE

9

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

0

還有另一個,也許不那麼傳統的方式:

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

3
method.getReturnType()==void.class  √ 

method.getReturnType()==Void.Type  √ 

method.getReturnType()==Void.class  X 
+1

我希望更多的人對SO做出迴應,提供這樣的最小和信息答案。 – 2017-09-21 17:14:23

相關問題