1

intメソッドの戻り値の型を、voidStringなどのクラスと比較したい。

次のようなコードを使用しました。

常に印刷され"null"ます。

Class type = m.getReturnType(); 
if (type.equals(Integer.class)) {
    System.out.print("0");
} else if (type.equals(Long.class)) {
    System.out.print("1");
} else if (type.equals(Boolean.class)) {
    System.out.print("2");
} else if (type.equals(Double.class)) {
    System.out.print("3");
} else if (type.equals(Void.class)) {
    System.out.print("4");
} else {
    System.out.print("null");
}
4

3 に答える 3

4

使用するClass.TYPE

if (type.equals(Integer.TYPE)) {
    ...
}

それはjava.lang.reflect.Methodクラスなので、この場合は使用できませんinstanceof

于 2013-05-25T20:55:42.047 に答える
0

Wrapper の型と対応するプリミティブ型を比較していると思いますが、これらは同じではありません。

例:

interface Methods {
  int mInt();
  Integer mInteger();

  void mVoid();

}

class Sample {
  public static void main(String[] args) throws Exception {
    Method mInt = Methods.class.getMethod("mInt", new Class[0]);
    Method mInteger = Methods.class.getMethod("mInteger", new Class[0]);
    Method mVoid = Methods.class.getMethod("mVoid", new Class[0]);


    mInt.getReturnType(); // returns int.class
    mInteger.getReturnType(); // returns Integer.class
    mVoid.getReturnType(); // returns void.class
  }
}
于 2013-05-25T21:11:13.430 に答える