I've seen the discussion at this question regarding how a class that implements from an interface would be instantiated. In my case, I'm writing a very small program in Java that uses an instance of TreeMap
, and according to everyone's opinion there, it should be instantiated like:
Map<X> map = new TreeMap<X>();
In my program, I'm calling the function map.pollFirstEntry()
, which is not declared in the Map
interface (and a couple others who are present in the Map
interface too). I've managed to do this by casting to a TreeMap<X>
everywhere I call this method like:
someEntry = ((TreeMap<X>) map).pollFirstEntry();
I understand the advantages of the initialization guidelines as described above for large programs, however for a very small program where this object would not be passed to other methods, I would think it is unnecessary. Still, I'm writing this sample code as part of a job application, and I don't want my code to look badly nor cluttered. What would be the most elegant solution?
EDIT: I would like to point out that I'm more interested in the broad good coding practices instead of the application of the specific function TreeMap
. As some of the answers have already pointed out (and I've marked as answered the first one to do so), the higher abstraction level possible should be used, without losing functionality.