我想比较的方法的返回类型与一些类,如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)
您的代码似乎没问题,但有一点问题:
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().