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