2009-12-17 14 views

Respuesta

93
if(method.getReturnType().equals(Void.TYPE)){ 
    out.println("It does"); 
} 

muestra rápida:

$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

Por alguna razón con Java 6 tuviera que sustituir '' Void.TYPE' con Void.class' de lo contrario el cheque haría siempre fallar. Ideas por qué? –

+1

@GiovanniBotta Void.TYPE es lo mismo que void.class y representa el tipo primitivo void. Void.class representa el tipo de referencia Void. Entonces tal vez su método devuelva Void en lugar de vacío. – Bax

7

Devuelve java.lang.Void.TYPE.

9

method.getReturnType() devuelve void.class/Void.TYPE.

0

Hay otra manera tal vez menos convencional:

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

Deseo que más personas en SO respondieran con respuestas tan mínimas e informativas. –

Cuestiones relacionadas