Hi @ll,
ich habe folgenden Quelltext:
Was ich tun möchte ist eine neue Instanz von ItemClass erstellen und dem Konstruktor als Parameter das Class-Objekt zur ASubClass übergeben.
Geht das ohne eine Warning zu generieren? Wie?
Edit: Da hatte ich doch die CImplementingClass vergessen...
Edit2: ItemClass-Constructor hinzugefügt
ich habe folgenden Quelltext:
Java:
public class AClass {}
Java:
public class ASubClass<E extends Object> extends AClass{}
Java:
public interface BInterface<O extends Object, A extends AClass> {}
Java:
public class CImplementingClass implements BInterface<Object, ASubClass<Object>>{}
Java:
public class ItemClass<E extends AClass, F extends BInterface<O, E>, O extends Object>
{
public ItemClass(Class<E> c) {}
}
Java:
public class Main
{
public static void main(String[] args)
{
// OK:
new ItemClass<AClass, BInterface<Object, AClass>, Object>(AClass.class);
// Nicht OK:
// The constructor
// ItemClass<ASubClass<Object>,CImplementingClass,Object>(Class<ASubClass>)
// is undefined
new ItemClass<ASubClass<Object>, CImplementingClass, Object>(
ASubClass.class);
// Nicht OK:
// Bound mismatch: The type CImplementingClass is not a valid substitute
// for the bounded parameter <F extends BInterface<O,E>> of the type
// ItemClass<E,F,O>
new ItemClass<ASubClass, CImplementingClass, Object>(ASubClass.class);
// Nicht OK:
// Cannot cast from Class<ASubClass> to Class<ASubClass<Object>>
new ItemClass<ASubClass<Object>, CImplementingClass, Object>(
(Class<ASubClass<Object>>)ASubClass.class);
// Fast OK (warning):
// Type safety: The expression of type Class needs unchecked conversion to conform to Class<ASubClass<Object>>
new ItemClass<ASubClass<Object>, CImplementingClass, Object>(
(Class)ASubClass.class);
}
}
Geht das ohne eine Warning zu generieren? Wie?
Edit: Da hatte ich doch die CImplementingClass vergessen...
Edit2: ItemClass-Constructor hinzugefügt
Zuletzt bearbeitet: