Ich habe die Diskussion bei dieser Frage gesehen, wie eine Klasse, die von einer Schnittstelle implementiert wird, instanziiert wird. In meinem Fall schreibe ich ein sehr kleines Programm in Java, das eine Instanz von verwendet TreeMap
, und nach Meinung aller sollte es wie folgt instanziiert werden:
Map<X> map = new TreeMap<X>();
In meinem Programm rufe ich die Funktion auf map.pollFirstEntry()
, die nicht in der Map
Schnittstelle deklariert ist (und einige andere, die auch in der Map
Schnittstelle vorhanden sind). Ich habe es geschafft, indem TreeMap<X>
ich auf eine Stelle gewirkt habe, die ich diese Methode nenne:
someEntry = ((TreeMap<X>) map).pollFirstEntry();
Ich verstehe die Vorteile der oben beschriebenen Initialisierungsrichtlinien für große Programme, aber für ein sehr kleines Programm, bei dem dieses Objekt nicht an andere Methoden übergeben wird, halte ich es für unnötig. Trotzdem schreibe ich diesen Beispielcode als Teil einer Bewerbung und möchte nicht, dass mein Code schlecht oder überladen aussieht. Was wäre die eleganteste Lösung?
EDIT: Ich möchte darauf hinweisen, dass ich mehr an den allgemeinen guten Codierungspraktiken interessiert bin als an der Anwendung der spezifischen Funktion TreeMap
. Wie einige der Antworten bereits gezeigt haben (und ich habe den ersten als beantwortet markiert), sollte die mögliche höhere Abstraktionsebene verwendet werden, ohne die Funktionalität zu verlieren.