为什么不能获取ArrayList的“ get”方法并调用它?
我正在使用反射在嵌套类中进行修改。我的一个类有一个类列表,所以我希望能够使用相同的逻辑来获取和调用get方法。
简化,失败的行是
ArrayList.class.getClass().getMethod("get")
它失败了,给了我一个NoSuchMethodException。
我知道可以使用aList.get(),但这不是重点,我需要使用反射,因为这是在深度嵌套的类中。
TL; DR
如何获取数组列表的“ get”方法?
最佳答案
请注意,Class#getMethod()
具有两个参数:String
和Class
对象的变量。前者是
参数列表
该方法声明的。
您需要使用
ArrayList.class.getMethod("get", int.class);
因为
ArrayList#get(int)
方法有一个int
参数。我最初很想念整个
ArrayList.class.getClass().getMethod("get")
^ ^
| |----------------------------- gets Class<Class>
|----------------------------------- gets Class<ArrayList>
.class
已获取Class
的ArrayList
实例。对此调用getClass
将返回类Class
的Class
实例。你不要那样关于java - Java反射ArrayList.class.getMethod(“get”)返回NoSuchMethodException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19100316/