在Java中,'Set'和'List'是从'Collection'接口派生的接口.如果我们使用代码:
import java.util.*;
public class SetExample{
public stactic void main(String[] args){
Set set = new HashSet();
//do something .....
}
}
Run Code Online (Sandbox Code Playgroud)
在"Collection"API中是否有一个类'Set',我们正在创建一个对象('set')?或者我们正在实例化一个界面'Set'?
我真的很困惑.......:O
Ste*_*n C 12
java.util.Set
是一个接口,而不是一个类.所以
Set set = new HashSet();
Run Code Online (Sandbox Code Playgroud)
创建一个作为HashSet
实例的对象,并将该对象的引用分配给类型为的变量Set
.这是有效的,因为HashSet
该类实现了Set
接口.另一方面:
Set set = new Set();
Run Code Online (Sandbox Code Playgroud)
由于无法创建接口实例,因此会出现编译错误.
Java接口本质上是实现(类)和使用它的东西之间的契约.它说明了符合对象的方法的名称和签名是什么,但没有关于对象的状态或其方法如何工作.
(只是为了混淆一点...... Java也允许你写这样的东西:
Set set = new Set() {
// attributes and methods go here
};
Run Code Online (Sandbox Code Playgroud)
这不会创建Set
接口本身的"实例" ...因为这没有意义.相反,它声明并实例化一个匿名类是实现该Set
接口.)
归档时间: |
|
查看次数: |
14731 次 |
最近记录: |