私は以下の汎用関数を複数のクラスから使いたいと思います。問題は、これをヘルパークラスから呼び出すと、可視性のためにフィールドオブジェクトを取得できないということです。ヘルパークラスのフィールドのJavaリフレクション
public <T> List<T> descendingServices(Class<T> cls) {
List<T> descendings = new ArrayList<>();
for (Field field : EnvironmentServiceImpl.class.getDeclaredFields()) {
Object obj;
try {
obj = field.get(this);
if (cls.isInstance(obj)) {
T descending = (T) obj;
descendings.add(descending);
}
} catch (IllegalAccessException e) {
}
}
return descendings;
}
フィールドでsetAccessible
を使用せずに何らかの形で回避できますか?
nope。 Edit:新しいオブジェクトを取得するように見えるので、元に戻す必要はありません。 –
参照:https://stackoverflow.com/questions/10638826/java-reflection-impact-of- setaccessibletrue –