Methoden Reflections: getMethod()-aufrufen ohne Parameter-Angabe

Pahlkenberg

Mitglied
Hallo allerseits,

ich möchte in einer Schleife dynamisch verschiedene Setter aufrufen anhand des Namens ("setStreet", "setForename", "setId",...) habe dabei aber natürlich verschiedene Parametertypen (String, Integer,Boolean, etc...). Wenn ich die Methoden jetzt nur über den Namen aufrufen will, bekomme ich eine NoSuchMethodException. Mit z.B. String.class als zweitem Argument funktioniert es dann, aber das ist eben wie gesagt nicht für jeden Schleifendurchgang gleich.
Kann man das so deklarieren, dass Java die richtigen Methoden findet unabhängig von den übergebenen Parametern?
 
nutze die methode getDeclaredMethods und vergleiche dann den namen mit dem gesuchten ...
 
mhm - alle methoden ueber [c]getMethods[/c] holen und dann auf Namensgleichheit testen und dann ueber die Klasse Method alle Informationen auslesen

Ab einen gewissen Punkt musst du aber wissen was fuer ein Typ du hast, wenn du sie aufrufen willst
 
Naja ich hätte in jedem Schleifendurchlauf jeweils das zu setzende Objekt (mit dem richtigen Typen) zur Verfügung und mein Plan wäre, die Methode dann einfach mit ebendiesem auszuführen. Reicht das oder muss man den Typen vorher nochmal spezifisch deklarieren?
 
inwiefern eine Deklaration bei einer Suche helfen kann weiß wohl niemand,

allgemein sollte die Frage, die meiner Meinung nach im Raum steht, klar sein:
nur nach den Namen, nicht nach den Parametern zu schauen reicht genau dann wenn die Methodennamen eindeutig,
nicht z.B. doppelt vorhanden sind, ob das bei dir der Fall ist kann niemand anders beurteilen
 
Ok vielen Dank! Jetzt funktioniert es. Ich habe eine Hilfs-Methode geschrieben, die eine Map<String,Method> mit allen Methoden anlegt (mit jeweils put(method.getName(),method)) und mir dann über den Namen meine benötigte Methode rausgibt.
Anschließend rufe ich diese mit dem zu setzenden Objekt auf.
 

Zurück
Oben