为了账号安全,请及时绑定邮箱和手机立即绑定

方法返回值类型不匹配

方法返回值类型不匹配

慕尼黑8549860 2018-07-24 06:02:46
public List<Object> initData() {    List<String> stringList = new ArrayList<>();    return stringList;}public Object tt() {    String s = "1";    return s;}为啥上边这种就报错类型不匹配,下边这么写就不报错?
查看完整描述

3 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

String是一个Object,但是List<String>却不是一个List<Object>。即String是Object的子类,但是List<String>却不是List<Object>的子类。List<String>和List<Object>都是List,没有继承关系,但是其限定的容器中可装的内容的类型不一致。故两者类型不匹配

查看完整回答
反对 回复 2018-07-24
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

public Object [] initData() {
     String [] dd = new String [10];
     return dd;
 }

换成数组就不报错,


查看完整回答
反对 回复 2018-07-24
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

方法 1  List<Object> initData() {...} 
就Java 语言而言,所有的类都隐式继承 Object,即 Object 类位于继承树最顶层,是所有其它类的基(父)类。 
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
方法 1 规定调用此方法将返回一个List ,其元素类型是 Object 。换句话说,返回的 List 之中的元素类型,可以是 Object,或 Object 的子类,即 可以是Java任何一个类的对象(实体)。
可是,此方法的代码,创建了一个 元素类型仅限于String(字符串)类型的List。
一种是元素类型可以是任意一种JAVA类的实体的 List (不限类型),一种是 元素类型仅限于String(字符串)类型的 List。两种List的类型当然不一样,故报错。

方法 2 Object tt(){...}
任何Java 子类的对象,都(可当作)是父类的对象。
比如,Student extends Person, 那麽,任何一个具体的学生,当然都是人(Person)。
方法 2 规定调用后返回 Object 类。
实际返回了一个字符串对象。字符串对象,当然就是一个 Object 类的对象。因此,方法 2 没错


查看完整回答
反对 回复 2018-07-24
  • 3 回答
  • 0 关注
  • 1211 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信