[英]Java Reflection - Get Fields From Sub Class as well as Super Class
我正在為我的項目使用繼承的bean類。 這里有些超類是空的,子類可以有字段,有些子類是空的,超類可以有字段。
我的要求是從Sub類獲取所有私有/公共字段以及從Super類獲取所有公共/受保護字段。
下面我試圖實現它。 但我沒能達到我的要求。 請提供一些建議來實現這一目標。
Field fields [] = obj.getClass().getSuperclass().getDeclaredFields();
如果我使用上面的代碼,我只能獲得超類字段
Field fields [] = obj.getClass().getFields();
如果我使用上面的代碼,我可以從Sub類和超類字段獲取所有字段
Field fields [] = obj.getClass().getDeclaredFields();
如果我使用上面的代碼,我可以獲得Sub類的公共和私有所有字段。
您將不得不迭代您的類的所有超類,如下所示:
private List<Field> getInheritedPrivateFields(Class<?> type) {
List<Field> result = new ArrayList<Field>();
Class<?> i = type;
while (i != null && i != Object.class) {
Collections.addAll(result, i.getDeclaredFields());
i = i.getSuperclass();
}
return result;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.