例如,给定一个这样的类:
public abstract class AbstractSomething {
public static volatile SingularAttribute<Somefield, AnotherField> myAttribute;
}
如何获取 myAttribute
的实例通过反射。 AbstractSomething
没有实现类.
编辑
不,我们需要 SingularAttribute<T, S>
的实例。我们需要使用反射的原因是因为这些类是生成并作为 Class
传递到我们的方法中的。目的。我们没有办法不知道哪个AbstractSomething
我们正在接收。其中有不少。
编辑2
找出问题所在。当应用程序中存在 Hibernate 上下文时,抽象类上的接口(interface)在访问它们时将被替换为其对应的实现。
最佳答案
实际上没什么大不了的,你可以这样做:
Field field = AbstractSomething.class.getField("myAttribute")
然后您可以通过调用 field.get(null)
和 field.set(null, value)
真正的问题是你为什么要使用反射,但我想你有你的理由。
编辑:
如果您事先有一个类实例(我们称之为 classInstance),那么您可以执行以下操作
Field field = classInstance.getField("myAttribute")
获取具体化您正在查找的字段的字段...如果您想要所有字段,只需调用 getFields
方法。
为了访问静态字段,您实际上并不需要具体的实现,也不需要具体化类的实例。
关于java - 从抽象类中获取字段实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26041433/