Ich bin auf der Suche nach einem schönen Muster, um Folgendes zu tun: Ich habe eine Klasse FooBar<A,B>
und ich weiß, dass A
hat einen Konstruktor mit einem einzigen B
Parameter. Ich möchte eine geschützte Methode in FooBar
mit der folgenden Signatur haben:Java Generics: Instantiierung A mit einem einzigen Konstruktor Argument B
protected A chuckNorris42(B b); // intent: return new A(b)
Natürlich ist die oben erwähnte „Absicht“ nicht übersetzbar ist. Zur Umgehung des Problems habe ich diese abstrakte Methode und an dem Punkt, wo ich FooBar
mit konkreten Klassen instanziiert implementiert I chuckNorris42
inline:
FooBar<Chuck, Norris> = new FooBar<Chuck, Norris>() {
protected Chuck chuckNorris42(Norris norris) {
return new Chuck(norris);
}
}
Es funktioniert, aber ich fragte mich, ob es einen schöneren oder sauberer Weg ist, das Gleiche zu erreichen Also habe ich beschlossen, die Frage hier zu stellen.
Hum, doesn 't type wrate verbieten, so etwas direkt in die generische Klasse zu schreiben? –
AFAIK gibt es keine Möglichkeit, auf die Klasse eines generischen Arguments zuzugreifen –
Ja, tut mir leid. Sie sollten eine Klasse von Chuck in eine Funktion übergeben. –