java - 我们可以使用反射来获取类的静态成员而不在对象实例上调用该方法吗?

标签 java class reflection

我们可以使用反射来获取类的静态成员而不在对象实例上调用该方法吗?

换句话说:

 public class MuchoStatic {

    private static staticMember;

    getStaticMember(){

    return this.staticMember;

    }
    } //end class

然后还有更多代码:

Method m = null;

try{

  m = MuchoStatic.class.getMethod("getStaticMember",null);

} catch (Exception e) {

}

Object o = null;
try{

 o = m.invoke(MuchoStatic.class,null);

} catch (Exception e) {

}

我收到非法参数异常,我认为这是因为我将 Class 对象传递到调用方法中。事实证明,Object o 确实被实例化了,但仍然抛出异常。

我们不应该这样做吗?

最佳答案

Can we use reflection to get a static member of a class without invoking that method on an object instance?

当然,因为它是静态的。

Object o = null;
try {
    Method m = MuchoStatic.class.getMethod("getStaticMember");
    m.setAccessible(true);
    o = m.invoke(null);

} catch (Exception e) {
    // don't ignore the exception as it may be trying to tell you something
    throw new AssertionError(e);
}

关于java - 我们可以使用反射来获取类的静态成员而不在对象实例上调用该方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19038043/

相关文章:

java - 我可以从java中的类实例中删除方法吗?

java - 检查 java 中的命名约定

java - 用于在 NetBeans 中对指向错误域的 session bean 进行单元测试的嵌入式 GlassFish 容器

java - 如何计算二维数组的频率

Java - 在eclipse中导出到可执行jar文件后读取文件

c++ - 是否可以在不创建实际对象的情况下通过指针访问类的函数?

class - 如何从 Powershell 类中正确调用使用 Add-Type 添加的类型的静态方法?

java - 如何获得 'unit test view' 进行仪表测试?

Swift 泛型,创建派生对象

reflection - 从 Golang 类型中提取未导出字段的正确方法是什么?