java - 实现接口(interface)的类的类型是什么

标签 java types

谁能告诉我作业 l4 和 l5 是否正确,为什么?例如

ArrayListList实现 Serializable界面。

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

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

String是一个实现 Serializable 的类接口(interface),那么 String 被称为“Serializable 的子类型”或“Serializable 的类型”?

谢谢

最佳答案

两者都不正确。

第 4 行将无法运行,因为 String不是 Serializable 的父类(super class)型,它是一个子类型。 第 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

关于java - 实现接口(interface)的类的类型是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7109115/

相关文章:

c# - 在 C# 中使用类型对象作为泛型的类型参数

java - 使用 Java 打印三角形(半金字塔)图案

java - 为什么我的射弹(图像对象)不移动? Java Swing

java - 来自 Android 设备的 REST Web 服务调用

javascript - Closure Compiler externs - 引用复杂函数

使用 String 创建变量以作为 uchar* 传递

java - java 中的 xmlns 和 xslt 转换

java - IntelliJ Spring 配置问题

java - 如何从java中的对象数组中检索特定对象

C 编程数据类型