3 回答
TA贡献1796条经验 获得超7个赞
String是一个Object,但是List<String>却不是一个List<Object>。即String是Object的子类,但是List<String>却不是List<Object>的子类。List<String>和List<Object>都是List,没有继承关系,但是其限定的容器中可装的内容的类型不一致。故两者类型不匹配
TA贡献1796条经验 获得超4个赞
public Object [] initData() {
String [] dd = new String [10];
return dd;
}
换成数组就不报错,
TA贡献1852条经验 获得超1个赞
方法 1 List<Object> initData() {...} 方法 2 Object tt(){...}
就Java 语言而言,所有的类都隐式继承 Object,即 Object 类位于继承树最顶层,是所有其它类的基(父)类。
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
方法 1 规定调用此方法将返回一个List ,其元素类型是 Object 。换句话说,返回的 List 之中的元素类型,可以是 Object,或 Object 的子类,即 可以是Java任何一个类的对象(实体)。
可是,此方法的代码,创建了一个 元素类型仅限于String(字符串)类型的List。
一种是元素类型可以是任意一种JAVA类的实体的 List (不限类型),一种是 元素类型仅限于String(字符串)类型的 List。两种List的类型当然不一样,故报错。
任何Java 子类的对象,都(可当作)是父类的对象。
比如,Student extends Person, 那麽,任何一个具体的学生,当然都是人(Person)。
方法 2 规定调用后返回 Object 类。
实际返回了一个字符串对象。字符串对象,当然就是一个 Object 类的对象。因此,方法 2 没错
添加回答
举报