我正在查看方法列表,并希望识别那些返回原语(或原始包装类)的方法。除了一个很大的switch
声明之外,还有一种简单的方法可以做到这一点吗?
Method[] methods = fooObj.getClass().getMethods();
for(int i = 0; i < methods.length; i++) {
Method m = methods[i];
Class c = m.getReturnType();
if(c == void.class) {
println("does not return anything.");
}
if( ??? ) { // <--- what expression to use?
println("a primitive, or primitive wrapper, is returned.");
}
}
答案 0 :(得分:0)
您可以这样使用commons-lang ClassUtils
Arrays
.stream(Example.class.getDeclaredMethods())
.filter(method -> ClassUtils.isPrimitiveOrWrapper(method.getReturnType()))
.collect(Collectors.toList());
答案 1 :(得分:-1)
在我对返回类型比较的建议中 - 您可以使用if(returnType == Integer.TYPE)){...}
示例示例:
import java.lang.reflect.Method;
class Example {
public void m1() {
System.out.println("No return");
}
public int m2() {
return 1;
}
}
public class MainApp {
public static void main(String[] args) {
Example exp=new Example();
Method[] declaredMethods = exp.getClass().getDeclaredMethods();
for(Method m:declaredMethods) {
Class<?> returnType = m.getReturnType();
if(returnType==void.class) {
System.out.println("No return");
}
//here is your solution
if(returnType==Integer.TYPE) {
System.out.println("Integer return");
}
}
}
}
希望它有用!!