13

谁能帮我找到JAVA中方法的返回类型。我试过这个。但不幸的是,它不起作用。请指导我。

 Method testMethod = master.getClass().getMethod("getCnt");

  if(!"int".equals(testMethod.getReturnType()))
   {
      System.out.println("not int ::" + testMethod.getReturnType());
   }

输出 :

不是整数 ::int

4

7 回答 7

15

方法getReturnType()返回Class

你可以试试:

if (testMethod.getReturnType().equals(Integer.TYPE)){ 
      .....;  
}
于 2013-02-06T13:32:08.013 回答
5
if(!int.class == testMethod.getReturnType())
{
  System.out.println("not int ::"+testMethod.getReturnType());
}
于 2013-02-06T13:34:27.877 回答
2

返回类型为Class<?>... 获取字符串尝试:

  if(!"int".equals(testMethod.getReturnType().getName()))
   {
      System.out.println("not int ::"+testMethod.getReturnType());
   }
于 2013-02-06T13:29:41.400 回答
2

getReturnType()返回Class<?>而不是 a String,因此您的比较不正确。

任何一个

Integer.TYPE.equals(testMethod.getReturnType())

或者

int.class.equals(testMethod.getReturnType())

于 2013-02-06T13:37:39.930 回答
1

getReturnType()返回一个 Class 对象,并且您正在与一个字符串进行比较。你可以试试

if(!"int".equals(testMethod.getReturnType().getName() ))
于 2013-02-06T13:30:17.527 回答
1

getReturnType方法返回一个Class<?>对象,而不是String您与之比较的对象。一个Class<?>对象永远不会等于一个String对象。

为了比较它们,您必须使用

!"int".equals(testMethod.getReturnType().toString())

于 2013-02-06T13:30:54.563 回答
1

getretunType() 返回Class<T>。您可以测试它是否等于 Integer 的类型

if (testMethod.getReturnType().equals(Integer.TYPE)) {
    out.println("got int");
}
于 2013-02-06T13:31:38.747 回答