集合<interface> name = null; </interface>

时间:2014-02-16 00:49:23

标签: java collections interface

当你有一个Collection&lt;时,它究竟是什么意思?界面名称&gt; variable = null;

这是什么变量?

我认为收藏本身就是一个界面。

重新提问:

假设您有一个界面。

public interface stack
{
String push();

String pop();

} 

并给出

Collection<stack> myname = null ;

在某个班级

你如何填充我的名字?

3 个答案:

答案 0 :(得分:1)

在这种情况下,堆栈将是集合中元素的类型, 你可以用这样的东西填充它:

Collection<stack> myName = new ArrayList<stack>();
myName.add(new stackImpl());

使用stackImpl实现堆栈的类和ArrayList实现Collection的类。

答案 1 :(得分:1)

你所描述的是多态性,是集合是一个接口。它描述了Collection的每个客户都可以期望的合同,并且Collection的每个实现都必须遵守。在某些时候,变量必须指向符合合同的实际实现,例如ArrayList。

Collection也有泛型形式的另一种形式的多态性。因此,集合可以包含将在声明Collection时确定的特定类型的对象。类型本身可以是一个接口,但Collection的底层成员必须是声明类型

的具体实现

例如:

// ArrayList honours the contract of Collection
// All members must be a String
Collection<String> var = new ArrayList<String>();

// HashSet honours the contract of Collection
// All members must be one of the implementing classes of Principal
Collection<Prinicpal> users = new HashSet<Principal>();

答案 2 :(得分:0)

Collection<stack> myname表示来自实现接口stack的类的对象集合。为了创建和填充这样的东西:

Collection<stack> myname = new ArrayList<stack>();
myname.add(new MyStack());


// Where
class MyStack implements stack { ... }

问题中是否隐藏着任何警告?我猜不会。