instanceof mit generischer Sammlung

8

Warum sollte das folgende Snippet nicht kompiliert werden?

%Vor%
  • Sie wissen nicht, dass mangoList ein Listentyp ist.
  • Das instanceof-Schlüsselwort funktioniert nur für primitive Typen.
  • Sie können die Art der Sammlungen nur durch Reflexion überprüfen.
  • Generische Typen werden vor der Laufzeit gelöscht. (ans)
  • Die Anweisung könnte dazu führen, dass mangoList auf eine Instanz einer Liste gesetzt wird.

Was halten Sie für die richtige Antwort?

    
Ujwol Shrestha 16.07.2012, 00:07
quelle

3 Antworten

7

Die richtige Antwort ist diejenige, die Sie ans markiert haben. Sie werden feststellen können, dass mangoList ein List ist, aber Sie könnten den Typ des gelöschten Arguments nicht ermitteln. Die restlichen Entscheidungen sind nicht sinnvoll.

    
dasblinkenlight 16.07.2012 00:13
quelle
3

1. Ja "Generische Typen werden während der Laufzeit gelöscht".

2. Sie können also den Typ der Liste nicht bestimmen.

3. Aber Sie werden erkennen können, dass MangoList eine Liste ist.

    
Kumar Vivek Mitra 16.07.2012 03:08
quelle
0

Sie können jedoch die mangoList instanceof List verwenden, um zu prüfen, ob es sich um eine Liste mit einem bestimmten Typ handelt. Dies ist nützlich, wenn Sie nicht sicher sind, ob Sie beispielsweise ein Listen- oder ein Mango-Objekt haben, aber nicht zwischen Listentypen unterscheiden. Um dies zu tun, rate ich Ihnen, das erste Element für seinen Typ zu überprüfen.

    
CosmicComputer 16.07.2012 00:21
quelle

Tags und Links