J'ai vu la discussion à cette question concernant la façon dont une classe qui implémente à partir d'une interface serait instanciée. Dans mon cas, j'écris un très petit programme en Java qui utilise une instance de TreeMap
, et selon l'opinion de chacun, il devrait être instancié comme:
Map<X> map = new TreeMap<X>();
Dans mon programme, j'appelle la fonction map.pollFirstEntry()
, qui n'est pas déclarée dans l' Map
interface (et quelques autres qui sont également présents dans l' Map
interface). J'ai réussi à le faire en lançant un TreeMap<X>
appel partout où j'appelle cette méthode comme:
someEntry = ((TreeMap<X>) map).pollFirstEntry();
Je comprends les avantages des directives d'initialisation décrites ci-dessus pour les grands programmes, mais pour un très petit programme où cet objet ne serait pas transmis à d'autres méthodes, je pense que ce n'est pas nécessaire. Pourtant, j'écris cet exemple de code dans le cadre d'une demande d'emploi, et je ne veux pas que mon code soit mal ni encombré. Quelle serait la solution la plus élégante?
EDIT: Je voudrais souligner que je suis plus intéressé par les bonnes bonnes pratiques de codage au lieu de l'application de la fonction spécifique TreeMap
. Comme certaines des réponses l'ont déjà souligné (et j'ai marqué comme étant la première à le faire), le niveau d'abstraction le plus élevé possible devrait être utilisé, sans perdre la fonctionnalité.