[英]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.