繁体   English   中英

从抽象类获取字段实例

[英]Get field instance from abstract class

例如,给定一个这样的类:

public abstract class AbstractSomething {

    public static volatile SingularAttribute<Somefield, AnotherField> myAttribute;
}

如何通过反射获取myAttribute的实例。 没有AbstractSomething实现类。


编辑

不,我们需要SingularAttribute<T, S>的实例。 我们之所以需要使用反射,是因为生成了这些类并将它们作为Class对象传递给我们的方法。 我们无法知道我们正在接收哪个AbstractSomething 有很多。


编辑2

找出问题所在。 当应用程序中存在Hibernate上下文时,访问它们时,抽象类上的接口将替换为其实现的对应对象。

实际上没什么大不了的,您可以执行以下操作:

Field field = AbstractSomething.class.getField("myAttribute")

然后您可以通过调用field.get(null)field.set(null, value)来访问它

真正的问题是为什么要使用反射,但是我想您有理由。

编辑:

如果您之前有一个Class实例(我们称其为classInstance),则可以

Field field = classInstance.getField("myAttribute")

以获取可丰富您要查找的字段的字段...,如果您希望所有字段都只需调用getFields方法。

为了访问静态字段,您实际上并不需要具体的实现,也不需要相关的类的实例。

无需反思。 该字段属于该类 ,并且不管有多少个子类, AbstractSomething类只有一个实例,因此:

SingularAttribute<Somefield, AnotherField> attr = AbstractSomething.myAttribute;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM