Nein, die Methoden, die Suche nach Ihnen genauen Parameter erwarten. Wenn Sie also mithilfe von find/search-Methoden der Reflection-API nach einem Konstruktor, einer Methode oder einem Feld suchen, verwendet die API equals()
, um Übereinstimmungen zu finden. Wenn Sie die gleiche Logik benötigen, die der Java-Compiler verwenden würde, müssen Sie ein Framework wie FEST Reflect oder commons beanutils verwenden. Oder Sie müssen getConstructors()
anrufen und Ihren eigenen Filtercode schreiben.
Auf den ersten Blick scheint dies dumm: Wenn der Java-Compiler es tun kann, warum kann die Reflection API nicht? Dafür gibt es zwei Gründe: Erstens muss die Java-Laufzeitumgebung nicht nach der aufzurufenden Methode suchen, da der Compiler bereits die richtige Methode ausgewählt hat.
Der zweite Grund ist, dass die Reflection API immer "zweitbeste" war. Es kann alles tun, aber das Ziel war nie, es wirklich einfach/freundlich zu machen (zumindest denke ich jedes Mal wenn ich es benutze :-)
Was ist 'B.class.getConstructors mit()' , finde die, die genau ein Argument nehmen, und überprüfe, ob 'A.class'' isAssignableFrom' dieses ist? –
ist B Konstruktor Öffentlichkeit? –
arne.b Dies ist eine Möglichkeit, aber ich dachte, es könnte tatsächlich einfacher sein. Nandkumar Ja, es ist öffentlich. –