Ich konvertiere etwas Python-Code in Java und habe eine Situation, in der ich Methoden eines Objekts aufrufen muss, aber erst zur Laufzeit weiß, welche Methoden. In Python löse ich das auf, indem ich getattr für mein Objekt verwende und eine Zeichenfolge übergebe, die der Name meiner Methode ist. Wie würden Sie etwas Ähnliches in Java machen?
Class.getField
ist dein Freund. Es wird wahrscheinlich nicht sehr einfach sein, da Python dynamisch typisiert ist und Java statisch getippt ist (es sei denn, Sie kennen die Typen Ihrer Felder im Voraus).
EDIT: Wie man diese Beispiele übersetzt. Ссылка
Attributsuche
Python
%Vor%Java
%Vor%
Methodenaufruf
Python
%Vor%Java
%Vor%In den einfacheren Fällen müssen Sie wissen, ob Sie ein Feld oder eine Methode haben. vor allem, da sie den gleichen Namen haben können. Zusätzlich können Methoden überladen werden, so dass Sie wissen müssen, welche Methodensignatur Sie möchten.
Wenn es Ihnen egal ist, welche Methode oder welches Feld Sie erhalten, können Sie dies relativ einfach als Hilfsmethode implementieren.
Sie können hier starten, um mehr über Java Reflection zu erfahren.
Sie können Java-Reflektion verwenden, aber es gibt keine genaue Entsprechung von getattr
.
Sie sollten die Reflection-API verwenden. Da die pure API ein wenig ... unnahbar ist, sollten Sie sich Helfer wie commons beanutils oder reflexionen .
Tags und Links python java reflection