如何比较原始类类型?像Integer和Void一样?

kar*_*ale 1 java types class

我想比较的方法的返回类型与一些类,如int,void,String,等.

我使用了这样的代码:

它总是打印"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");
}
Run Code Online (Sandbox Code Playgroud)

acd*_*ior 9

您的代码似乎没问题,但有一点问题:

Class type = m.getReturnType(); 
boolean result = type.equals(Integer.class);
Run Code Online (Sandbox Code Playgroud)

result这里只评估trueif m的返回类型是否属于Integer该类.

如果它是一个int将评估的false.

要检查返回类型是否也是基本类型,您需要与Integer.TYPE(不.class)进行比较,并与其他类型进行比较.


所以改变你的代码:

if (type.equals(Integer.class)) {
Run Code Online (Sandbox Code Playgroud)

if (type.equals(Integer.class) || type.equals(Integer.TYPE)) {
Run Code Online (Sandbox Code Playgroud)

并为其他类型做同样的事情.这将匹配像Integer getAge()和的方法int getAge().