私はJavaを初めて使用しています。数週間前に開始され、Oracleのドキュメントとこのサイトに依存しています。徐々に私はOOPの主な概念をよく理解しています。インタフェースのインスタンスメソッドを直接呼び出す
インターフェイスのインスタンスメソッドは、実装クラスのインスタンスメソッドになり、インスタンス化された後、実装クラスのオブジェクトを通じて呼び出すことができます。
インターフェイスセットには、iterator()メソッドがあります。私が理解するには、最初にSetインタフェースを実装したクラスを持っていなければなりません。オブジェクトを介してそのメソッドを呼び出すには、そのクラスのオブジェクトをインスタンス化する必要があります。
私はオンラインで読んでいましたが、iterator()メソッドがset(setインターフェイス)のみで呼び出されていることに気付きました(つまり、setはインスタンスのインスタンスではありません)。 Setインタフェースを実装するすべてのクラス)。
私の質問です:これは可能ですか?
一方、オラクルのドキュメントによると、上記の可能性にかかわらず、iterator()メソッドはSetインタフェースの "インスタンス"と "抽象"メソッドに分類されます。では、デフォルトと静的なインタフェースメソッドだけが実装されているので、 "set"変数がどのように呼び出されますか?ここで
public static void main(String args[]) {
HashMap<Integer, String> hmap = new HashMap<Integer, String>();
hmap.put(12, "Chaitanya");
hmap.put(2, "Rahul");
/* Display content using Iterator*/
Set set = hmap.entrySet();
Iterator iterator = set.iterator();
while(iterator.hasNext()) {
Map.Entry mentry = (Map.Entry)iterator.next();
System.out.print("key is: "+ mentry.getKey() + " & Value is: ");
System.out.println(mentry.getValue());
"set"は_object_です_implements_ [...] "特に初心者向けの誤った文です。変数_はオブジェクトではありません。それは単に_を1つだけ参照しています。変数の型には2つの意味があります。1)参照されているオブジェクトの実行時の型を制約します。 2)それはあなたがそれで呼び出すことができるメソッドを制限します。 – Seelenvirtuose
別の奇妙な言葉: "' 'hmap.entrySet'は_object_を' set'変数[...]に返します。変数に_into_を戻しません。 'hmap.entrySet()'の呼び出しはオブジェクト( 'Set')への参照を返し、この参照は_assigned_で変数に代入されます。 – Seelenvirtuose
参照はクラスとインタフェースの違いを識別しようとすると少し早すぎます。あなたは可変型の記述では正しいですが、制約の観点からタイプを記述することは、この時点では少し複雑です。そう思わないのですか? –