我有一行代码如下:
ConfiguationManagerUtils.class.getResource(resourceName);
我不明白为什么在这里使用反射。像静态类方法一样调用它有什么区别:
ConfiguationManagerUtils.getResource(resourceName);
答案 0 :(得分:5)
根本没有使用反射。您的第一个代码段中调用的getResource(String)
方法根本没有在ConfigurationManagerUtils
上声明 - 它在Class
类上声明,作为实例方法。如果第二个代码段也有效,那是因为getResource(String)
(或超类)中声明了静态ConfigurationManagerUtils
方法。这可能会与<{1}} 完全不同。
第一个片段只是使用类文字(Class.getResource()
)来获取对ConfigurationManagerUtils.class
实例的引用,它可以在其上调用getResource(String)
实例方法。
答案 1 :(得分:2)
在此代码中,您调用对象Class
的非静态方法,引用您的ConfiguationManagerUtils
类:
ConfiguationManagerUtils.class.getResource(resourceName);
在此代码中,您调用ConfiguationManagerUtils
类的静态方法。
ConfiguationManagerUtils.getResource(resourceName);
答案 2 :(得分:1)
这不是使用反射,您只是访问class
的{{1}}属性。
答案 3 :(得分:1)
两次通话之间存在 BIG 差异。
ConfiguationManagerUtils.class.getResource(资源名称); 调用
getResource()
的 class-object 的方法ConfiguationManagerUtils
。不是您在类ConfiguationManagerUtils 中定义的那个。- 醇>
ConfiguationManagerUtils.getResource(资源名称); 调用类
ConfiguationManagerUtils
中的方法。即, 该方法在类中的代码中定义ConfiguationManagerUtils
。