Dobrý den, nedal by se ten problém vyřešit "krokem stranou"? Tj. že před voláním execute byste testoval jen
plugin instanceof Plugin Následně byste volal nějakou metodu pluginu, která by ověřila kompatibilitu typového parametru, např. plugin.isCompatibleWith(Integer.class); Metoda "isCompatibleWith" by byla součástí rozhraní Plugin. Předpokladem je, že každý plugin musí znát ten svůj typový parametr. Nespíš by ho měl mít jako parametr v konstruktoru anebo přímo zabudovaný (třeba jako konstantu apod.). mp. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Martin Beránek Sent: Friday, June 13, 2008 08:53 AM To: Java Subject: generic instanceof Zdravím konferenci, narazil sem na zajímavý problém - nemůžu vygooglit řešení... navíc po přečtení tohoto: http://www.ibm.com/developerworks/java/library/j-jtp01255.html si nejsem jistý jestli řešení existuje, takže: mám abstraktní třídu A<T>. V této třídě načítám pluginy (přes Class.forName) - rozhraní pro pluginy mám definované jako: interface Plugin<T> { boolean execute(T param); } V třídě A bych před zavoláním execute potřeboval ověřit, že: plugin instanceof Plugin<T> tedy že plugin typově sedí k dané implementaci. Například: "class Plugin1 implements Plugin<Number>" půjde zavolat z "class B extends A<Integer>" ale ne z "class C extends A<String>" dále poznamenám že v abstraktní třídě A mám k dispozici proměnnou typu Class<T> -- Martin Beránek
