Hallo,
jetzt arbeite ich seit Monaten mit Generics, aber heute ist mir wohl ein Brett vor den Kopf geraten...
Folgendes Problem: ich möchte zur Laufzeit alle von einem Objekt implementierten Interfaces abfragen und mit denjenigen, die von einem bestimmten Basisinterface abgeleitet sind, bestimmte Operationen ausführen.
Soweit ganz einfach:
Da ich ja aber für den Aufruf von registerInterface bereits weiss, dass es sich nicht um irgendein Class-Object handelt, sondern eben um ein von RemoteInterface abgeleitetes Interface, würde ich registerInterface lieber so deklarieren:
Jetzt wird natürlich die "unchecked conversion" beim Aufruf angemeckert. Klar, das ist nur eine Warnung, und, ebenfalls klar, ich kann die auch mit @SuppressWarnings("unchecked") unterdrücken, aber gibt es auch einen Weg, mit dem man das sauber lösen kann?
jetzt arbeite ich seit Monaten mit Generics, aber heute ist mir wohl ein Brett vor den Kopf geraten...
Folgendes Problem: ich möchte zur Laufzeit alle von einem Objekt implementierten Interfaces abfragen und mit denjenigen, die von einem bestimmten Basisinterface abgeleitet sind, bestimmte Operationen ausführen.
Soweit ganz einfach:
Code:
protected void initialize() throws BException {
try {
//--- find all RemoteInterfaces that are declared by target service
Class cls = targetService.getClass();
Class[] ifcs = cls.getInterfaces();
for ( Class ifc : ifcs) {
if ( RemoteInterface.class.isAssignableFrom( ifc)) {
registerInterface( ifc);
}
}
} catch (Throwable t) {
BException.throwInstance( t);
}
}
protected void registerInterface( Class ifc) {
/* ... */
}
Da ich ja aber für den Aufruf von registerInterface bereits weiss, dass es sich nicht um irgendein Class-Object handelt, sondern eben um ein von RemoteInterface abgeleitetes Interface, würde ich registerInterface lieber so deklarieren:
Code:
protected void registerInterface( Class<? extends RemoteInterface> ifc) {
/* ... */
}
Jetzt wird natürlich die "unchecked conversion" beim Aufruf angemeckert. Klar, das ist nur eine Warnung, und, ebenfalls klar, ich kann die auch mit @SuppressWarnings("unchecked") unterdrücken, aber gibt es auch einen Weg, mit dem man das sauber lösen kann?