Dan*_*vid 2 java static field inherited
我在以下情况:
public class SuperClass
{
public static Object superClassStaticField;
}
public class ChildClass extends SuperClass
{
... some methods and fields
}
Run Code Online (Sandbox Code Playgroud)
我有一个看起来像这样的方法:
...modifiers... void action(Class <? extends SuperClass> cls)
{
...
}
Run Code Online (Sandbox Code Playgroud)
我想到达所有元素whit反射,包括超类静态字段,我(后来在ChildClass中)初始化,但看起来这里有一些逻辑在反射中失败:
superClassStaticField在Superclass中,所以如果我试图达到:
cls.getClass().get[Declared]Field("superClassStaticField");
Run Code Online (Sandbox Code Playgroud)
我会得到java.lang.NoSuchFieldException
所以我必须达到SuperClass的麻烦:
SuperClass.class.getDeclaredField("superClassStaticField").get(null);
Run Code Online (Sandbox Code Playgroud)
将成功运行,但如果有多个ChildClass在同一个运行时工作,我的程序变得疯狂.我认为beacuse所有方法都达到相同的对象,它在SuperClass中声明.
但是,我怎样才能达到实际给定的类静态字段?
我试过了:
SuperClass.class.getDeclaredField("superClassStaticField").get(cls);
Run Code Online (Sandbox Code Playgroud)
但结果是一样的.
我怎么能达到它?
编辑:我想现在只获取/设置静态字段,创建一个新实例是不安全的,(酸它有空构造函数?并且什么都不会修改?)
但是,我怎样才能达到实际给定的类静态字段?
这里是只有一个静态字段.每个子类最终不会有一个静态字段.听起来你需要采取不同的方法.我们不能就这种方法应该给你很多建议,因为我们不知道你想要实现什么.也许Map<Class, Object>你正在追求的是什么?
| 归档时间: |
|
| 查看次数: |
704 次 |
| 最近记录: |