Ich habe die folgende generische Funktion, die ich aus mehreren Klassen verwenden möchte. Das Problem ist, dass ich die Feldobjekte wegen der Sichtbarkeit nicht abrufen kann, wenn ich das aus einer Hilfsklasse aufrufe.Java Reflektion auf Felder von einer Hilfsklasse
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;
}
Kann ich das irgendwie umgehen, ohne setAccessible
auf dem Feld verwendet?
nein. Sie können zweimal darauf zugreifen, obwohl Bearbeiten: sieht aus wie Sie ein neues Objekt bekommen, so dass Sie es nicht einmal zurücksetzen müssen –
siehe: https://stackoverflow.com/questions/10638826/java-reflection-impact-of- setaccessibletrue –