Java Reflection .getMethod int vs Integer

时间:2015-11-19 20:42:32

标签: java reflection integer primitive-types

我在包carefully [set id self] [set id "Observer] 中有一个类MyClass,如下所示:

mypackage

还有一个类package mypackage; public class MyClass{ public static myMethod (Integer i) { return i + " is an Integer"; } public static myMethod (int i){ return i + " is an int" } } ,如下所示:

Invoker

以下是调用方法时发生的情况:

public class Invoker{

    public String call(String class_name, String method_name, Serializable[] parameters){
        int p_amount = parameters.length;
        Class<?> param_types = new Class[p_amount];

        // Get types of parameters
        for (int i = 0; i < p_amount; i++){
            param_types[i] = parameters[i].getClass();
        }

        // Get method with that signature
        Method m = Class.forName(class_name).getMethod(method_name, param_types); 

        // Invoke method with given parameters
        m.invoke(null, parameters); 
    } 
}

有没有办法指定我可能用int number = 3; new Invoker().call("mypackage.MyClass", "myMethod", number)//->i is an Integer 作为参数调用方法?

我的猜测是当int作为int对象传递时,它会自动被解析为它的堂兄,真实对象Serializable,但我不是Java专家。 ..

更新 这与here中的问题不同,因为直接调用,这里有一个方法,将Integer框插入int。正如我之前提到的那,这是我的想法,但想要其他人对此事的看法和知识。

1 个答案:

答案 0 :(得分:3)

是的,您可以使用int.classInteger.TYPE来标识整数原语。