实现接口的类的类型是什么

时间:2011-08-18 14:31:42

标签: java types

任何人都能告诉我作业是否属于l4& l5是对的,为什么? e.g

ArrayListList实施Serializable界面。

ArrayList<String> list1 = new ArrayList<String>();

ArrayList<? super Serializable> l4 = list1 ;
ArrayList<Serializable> l5 = list1 ;

String是一个实现Serializable接口的类,然后String被称为“Serializable的子类型”或“Serializable的类型”?

由于

1 个答案:

答案 0 :(得分:4)

两者都不正确。

第4行无效,因为String不是Serializable的超类型,而是子类型。 第5行无效,因为ArrayList<String>不是ArrayList<Serializable>的子类型。

这会有效:

ArrayList<? extends Serializable> l6 = list1; // because String implements Serializable
List<String> l7 = list1; // because ArrayList implements List
List<? extends Serializable> l8 - list1; // both of the above