开发者社区 问答 正文

JAVA中list的泛型问题?报错

比如 List<A> lst = XXinstance.get("xx") 。假设 get这个方法返回的只是一个List 没有指定泛型,所以IDE中看不出来。 假设实际中是个Map,那么编码时我不知道。在编译的时候这里不报错,运行时如果我用lst.get(0).A'sMethod,这里就报错了。会提示无法将map强转为A。那么我就想知道,在这种List<A> lst 方式声明的场景下,java是不是都在运行时,才把后面get的结果强转为A的

展开
收起
爱吃鱼的程序员 2020-06-22 11:42:41 573 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
    publicEget(intindex){RangeCheck(index);return(E)elementData[index];}

    在ArrayList的源码中找到了答案,运行时会强转一下



    如你所说,如果get方法被定义为返回List而不是List<A>,那么你会得到一个警告。

    如果你不管警告,就得自己确保这个List必须是List<A>或者List<subclassofA>

    2020-06-22 11:42:59
    赞同 展开评论