在 Java 中,'Set' 和 'List' 是从 'Collection' 接口(interface)派生的接口(interface)。 如果我们使用代码:
import java.util.*;
public class SetExample{
public stactic void main(String[] args){
Set set = new HashSet();
//do something .....
}
}
“Collection”API 中是否有一个类“Set”,我们正在为其创建一个对象(“set”)?或者我们正在实例化接口(interface)“Set”?
我真的很迷茫......:O
最佳答案
java.util.Set
是一个接口(interface),而不是一个类。所以
Set set = new HashSet();
创建一个 HashSet
实例的对象,并将对该对象的引用分配给类型为 Set
的变量。这是有效的,因为 HashSet
类实现 Set
接口(interface)。另一方面:
Set set = new Set();
给出一个编译错误,因为你不能创建一个接口(interface)的实例。
Java 接口(interface)本质上是实现(类)和使用它的事物之间的契约。它说明了一致对象方法的名称和签名是什么,但没有说明对象的状态或其方法如何工作。
(只是为了让事情有点困惑......Java 也允许你写这样的东西:
Set set = new Set() {
// attributes and methods go here
};
这不会创建 Set
接口(interface)的“实例”本身 ... 因为那没有意义。相反,它声明并实例化一个匿名类,该类实现 Set
接口(interface)。)
关于java - 定义 'Set set = new HashSet()' 时,设置为接口(interface)或类 Set 的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3715209/