TreeMapのためのメソッドのtailMapを解決できません。

Egor Erofeev:

なぜTreeMap型のMapメソッドを定義していませんtailMapheadMap

Map<String, String> map = new TreeMap<>();
map.tailMap();  //cannot resolve method tailMap

明示的なキャストで、それは動作します:

((TreeMap<String, String>) map).tailMap("a");

NavigableMapすべてがうまくています。

NavigableMap<String, String> map1 = new TreeMap<>();
map1.tailMap("a");

私は右のためのインタフェースの者のことだ場合はMap、オブジェクトがその顔にもかかわらず、対応する方法を欠いているmapクラスの具体的な実装であるTreeMap、確かにそのような方法を所有していること。

ただ、より詳細な説明を探しています。

ありがとう!

user10367961:

型のオブジェクトは、TreeMapメソッドを持っているtailMap、しかし、あなたはタイプの参照を経由して、それを参照されMap公開されていない、tailMap方法自体を。コンパイラは文句を言う理由です。

Javaがあることに注意してください静的型付けコンパイラは、ことを確認する必要があることをこれは意味、コンパイル時にかかわらず、実際の実施の呼び出すメソッドがあること。

あなたが持っている可能性がありますのでMap、実装定義していないtailMap方法を、コンパイラはあなたが呼び出すことができませんtailMap経由で参照されたオブジェクトのメソッドをMap

以来NavigableMapインターフェースはメソッドを定義するtailMapには、を介して参照されるオブジェクトのメソッドを呼び出すことが可能ですNavigableMapあなたが使用している場合にも適用されTreeMapているので、参照型としてTreeMap実装NavigableMapコンパイラは2番目と3番目の例(明示的なキャストとに文句を言わない理由ですNavigableMap参照宣言)。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=136646&siteId=1