使用Reflection

时间:2018-03-03 12:33:44

标签: java reflection

我正在尝试使用反射来获取类的方法,其中该方法的参数有时是基本类型或任何Object。

示例:

public class A {

public void display(short a){
    System.out.println(a);
    }

}

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import com.rexample.model.A;

public class ReflectionExample {

    public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        ReflectionExample example=new ReflectionExample();
        example.print();
    }

    public void print() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        String nameOfTheMethod="display";//Assume name of the method is display
        short v=10;//Assume primitive type is short
        Object value=v;
        Method method=A.class.getDeclaredMethod(nameOfTheMethod,value.getClass());
        method.invoke(new A(),value);
    }

}

我收到错误:

Exception in thread "main" java.lang.NoSuchMethodException: com.rexample.model.A.display(java.lang.Short)
    at java.lang.Class.getDeclaredMethod(Class.java:2130)
    at com.rexample.test.ReflectionExample.print(ReflectionExample.java:34)
    at com.rexample.test.ReflectionExample.main(ReflectionExample.java:27)

上面的代码只是我正在构建的一个较大程序的一个小例子,我无法获取参数类型short的方法或任何其他原始类型。

我无法在我的代码中直接使用short.class或Short.TYPE,因为我试图以更通用的方式进行。

有没有办法解决我的基本类型参​​数和任何对象的问题?

0 个答案:

没有答案