Keeping Unterschrift
Wenn Sie Ihre Methodensignatur nicht ändern kann (dh, wenn Sie einen Object
erhalten müssen, und addActionListener()
nennen, wenn es ein solches Verfahren Definition ist), eine allgemeinere/robuste Lösung wäre mit Java Reflections, um zu überprüfen, ob das aktuelle Objekt eine addActionListener()
-Methode definiert hat, und diese auch über Reflektionen aufrufen. Klingt sowieso sehr hacky.
ändern Signature
Wenn Sie Ihre Methodensignatur ändern können, versuchen AbstractButton
(https://docs.oracle.com/javase/7/docs/api/javax/swing/AbstractButton.html#addActionListener(java.awt.event.ActionListener)) verwendet wird, welche die übergeordnete Klasse ist, die diese Methode für JButton
definiert, JToggleButton
und JMenuItem
, zum Beispiel (siehe „Direct bekannt Subklassen "und der Klassendefinitionsbaum, um herauszufinden, wo die Methoden tatsächlich bereitgestellt werden."
Dieser zweite Ansatz funktioniert nur, wenn es tatsächlich eine einzige Superklasse gibt, die die Methode definiert. Wenn es mehr als einen gibt, müssen Sie nach den möglichen Klassen suchen, indem Sie if-else
structure und instanceof
+ explizite Besetzung verwenden (als Sie Ihre ursprüngliche Object
Signatur behalten können).
Wenn Sie mehr Informationen zu Ihrem ursprünglichen Problem (wie, warum brauchen Sie eine solche Methode), werden wir wahrscheinlich in der Lage sein, bessere Ansätze zu finden.
was 'this' Klassendefinition? erweitert/implementiert welche Klassen/Interfaces? –
'this' ist ein ActionListener – qry