Java Reflection .getMethod int vs Integer



我在包mypackage中有一个类MyClass,它看起来像这样:

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对象传递时,它会自动解析为它的表亲,即真正的对象Integer,但我不是Java专家。。。

更新这与这里的问题不同,因为有一个直接调用,这里有一个介于两者之间的方法,将int框入Integer。正如我之前提到的,这是我的想法,但我想听听别人对此事的看法和了解。

是的,可以使用int.classInteger.TYPE来标识整数基元。

相关内容

  • 没有找到相关文章

最新更新