当你有一个Collection<时,它究竟是什么意思?界面名称> variable = null;
这是什么变量?
我认为收藏本身就是一个界面。
重新提问:
假设您有一个界面。
public interface stack
{
String push();
String pop();
}
并给出
Collection<stack> myname = null ;
在某个班级
你如何填充我的名字?
答案 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 { ... }
问题中是否隐藏着任何警告?我猜不会。