调用方法作为静态和通过反射

时间:2015-05-06 05:48:30

标签: java

我有一行代码如下:

ConfiguationManagerUtils.class.getResource(resourceName);

我不明白为什么在这里使用反射。像静态类方法一样调用它有什么区别:

ConfiguationManagerUtils.getResource(resourceName);

4 个答案:

答案 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 差异。

  
      
  1. ConfiguationManagerUtils.class.getResource(资源名称);   调用getResource() class-object 的方法ConfiguationManagerUtils。不是您在类ConfiguationManagerUtils 中定义的那个。

  2.   
  3. ConfiguationManagerUtils.getResource(资源名称);   调用类ConfiguationManagerUtils中的方法。即,   该方法在类中的代码中定义   ConfiguationManagerUtils

  4.