簡體   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