我对java反射概念还不熟悉。我需要使用java反射从特定类访问一个方法。这个方法有三种不同的论点,
public void print(int start, String middle, int end) {
System.out.println(start);
System.out.println(middle);
System.out.println(end);
}
我试着这样调用这个方法,
...
method.invoke(null, "middle", null);
...
我有非法辩论例外。我知道null对于 Package 器类型args是可以接受的,但是我只是尝试了这个方法来了解它是如何工作的。
所以,我的主要问题是,如何通过反射将基元类型值传递给方法参数?另外,如何通过反射传递基元类型arg的默认值(例如:假设在运行时我不需要end arg值,那么如何为end arg传递0)
有办法解决这个问题吗?
1条答案
按热度按时间xe55xuns1#
假设您有这样一个类:
您可以使用以下代码:
使用反射示例化类
获取所需的方法
使用反射调用所需的方法
注意,对于原语值,不需要传递is
null
. 对于这些情况,您需要提供一个值,这反过来意味着反射地调用方法,如下所示:printMethod.invoke(instance, 0, "it's me", 0);
请注意,这与直接调用方法相同,在本例中也是尝试传入null
作为整数的方法参数将导致编译错误。