为什么这种Java方法只能使用反射?

时间:2013-06-05 08:01:16

标签: java android reflection

我很反思,事实上,在遇到以下问题之前我从未使用过它 -

我尝试使用名为Resources的类中定义的名为getCompatibilityInfo的方法,但我看到这样做的唯一方法就是这样调用它:

Resources.class.getMethod("getCompatibilityInfo");

我可以使用名为getResources()的方法获取资源实例,那么为什么不能使用getResources().getCompatibilityInfo()访问它?

课程源代码为 here

谢谢!

2 个答案:

答案 0 :(得分:2)

Resources没有空的公共构造函数。所以new Resources()会给你一个编译时错误,getCompatibilityInfo()也不是公共API的一部分

答案 1 :(得分:2)

这只是在Android中发生的事情,因为 android.jar 删除了标有@hide的所有方法。这只在编译时很重要,因为 android.jar 仅用于开发。

this answer的详细解释。