我是Java新手。几周前开始,依靠oracle文档和本网站。渐渐地,我对OOP的主要概念有了很好的理解。
我很清楚接口的实例方法成为实现类的实例方法,因此可以在实例化后通过实现类的对象调用。
接口Set有方法iterator()。根据我的理解,我们需要首先实现Set接口的类,然后实例化该类的对象,以便能够调用该方法(通过该对象)。
查看下面的代码片段,我正在网上阅读,我注意到iterator()方法是通过(set)调用的,它只是类型(Set interface),(即set不是任何实例实现Set接口的类。)
我的问题是:这可能吗?
另一方面,无论上述是否可行,根据oracle文档,方法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());
答案 0 :(得分:0)
是的,这是可能的。
设置集; 这里,set只是一个参考变量。
如果我们有一个界面说'interface1',那么就不允许以下内容:
interface1 object = new interface1();
但是如果Class1实现了interface1,那么
interface1 ref = new Class1()和
Class1 ref = new Class1(),
以上'ref'都可以使用。
此外,您必须知道,界面的所有方法都是默认的公共和抽象方法,所有抽象方法必须才能实现。
希望这能回答你的问题。
答案 1 :(得分:-1)
以下是阅读本文的方法:
Set set = hmap.entrySet();
Iterator iterator = set.iterator();
hmap.entrySet
将对象返回到实现 Set接口的set
变量中。这意味着set
实现了Set接口中声明的所有方法。因此,对iterator()
对象调用set
方法是完全正确的,因为它是Set接口的方法之一。
set
是对象,实现 Set
接口。它不是一个界面。这里唯一的界面是Set
。