Ich habe versucht, das nächste zu verstehen. Dieser Codeblock wird gedruckt nächstGenerische Besetzung mit Klammern
[email protected]
[email protected]
So nehme ich an, dass Guss erfolgreich abgeschlossen war, aber ich erwarte, dass Classcast für die zweite Objekt in der Liste.
public class TestGenerics
{
public static void main(String[] args)
{
Generic<One> integerGeneric = new Generic<One>(new Container(Lists.<Object>newArrayList(new One(), new Two())));
integerGeneric.checkContainer();
}
static class Generic<T>
{
private Container container;
public Generic(Container container)
{
this.container = container;
}
public void checkContainer()
{
for (Object key : container.getObjects())
{
final T genericKey = (T)key;
System.out.println(genericKey);
}
}
}
static class Container
{
Iterable<Object> objects;
public Container(Iterable<Object> objects)
{
this.objects = objects;
}
public Iterable<Object> getObjects()
{
return objects;
}
}
static class One
{
}
static class Two
{
}
}
P.S. Auch ich sah ein Problem, dass generische Typumwandlung (mit (T) -Objekt) null zurückgibt, anstatt die Ausnahme ClassCastExceptiong zu werfen, aber ich kann es nicht reproduzieren. Wenn jemand darüber Bescheid wissen, hier einen Kommentar, bitte
Sie könnten nachschlagen, was "Typ löschen" ist und wie es in Java funktioniert. – Tom
Ich wette, dass Sie dort eine unkontrollierte Cast-Warnung haben. –
@Tom, danke, ich habe gelernt, dass JVM generische wie Objekttyp in Runtime (oder nächsten Typ, wenn es "existiert") – Gcinbax