Java 确定方法是否返回原语的最佳方法?
我正在浏览一个方法列表,希望识别那些返回原语(或原语包装类)的方法。除了一个大的Java 确定方法是否返回原语的最佳方法?,java,reflection,Java,Reflection,我正在浏览一个方法列表,希望识别那些返回原语(或原语包装类)的方法。除了一个大的开关语句之外,还有什么简单的方法可以做到这一点吗 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) {
开关
语句之外,还有什么简单的方法可以做到这一点吗
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.");
}
}
Method[]methods=fooObj.getClass().getMethods();
for(int i=0;i 如果(???){/在我对返回类型比较的建议中-
您可以使用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");
}
}
}
}
import java.lang.reflect.Method;
课例{
公共空间m1(){
系统输出打印项次(“不返回”);
}
公共int m2(){
返回1;
}
}
公共类MainApp{
公共静态void main(字符串[]args){
示例exp=新示例();
方法[]declaredMethods=exp.getClass().getDeclaredMethods();
对于(方法m:公布方法){
类returnType=m.getReturnType();
if(returnType==void.class){
系统输出打印项次(“不返回”);
}
//这是你的解决方案
if(returnType==Integer.TYPE){
System.out.println(“整数返回”);
}
}
}
}
希望它有用!!你可以用这种方法
Arrays
.stream(Example.class.getDeclaredMethods())
.filter(method -> ClassUtils.isPrimitiveOrWrapper(method.getReturnType()))
.collect(Collectors.toList());
也许能帮上忙。@LAD对此表示抱歉。我想我应该一直寻找最简单的解决方案。所以,这是有帮助的吗?@LAD当然。考虑到java处理原语的有趣方式(一切都是对象)我把注意力集中在更具创造性的东西上,忘记了检查API。但是,我会接受这个解决方案!很酷,很乐意帮助。这比我们要避免的切换语句更糟糕。类有一个方法是原始的。只是使用它。同意,我没有专注于交换PAR思想,如果要进行类型比较的条件。place Conditional with Polymorphics可能很有用,因为我们需要创建与条件的分支匹配的子类。在这些子类中,创建一个共享方法,并将代码从条件的相应分支移动到它。然后用相关的方法调用替换条件。其结果是将获得正确的实现根据对象类,通过多态性进行编辑。