一个有个泛型的问题,还请大佬们指点一二

2019-08-07 10:53:01 +08:00
 zhuawadao
我放到笔记里分享出来,链接如下:
https://app.yinxiang.com/fx/19ca1d4c-73af-49ec-9442-d3b9e395bc5b
4138 次点击
所在节点    Java
21 条回复
xidaduo
2019-08-07 10:57:46 +08:00
Java 类型擦除了解一下
Raymon111111
2019-08-07 10:59:41 +08:00
简单说 java 的泛型是假的

你可以按照这个思路多搜点文章看看就懂了
airfling
2019-08-07 11:04:13 +08:00
java 与其说是泛型倒不如看作接口更好一点,你的第一问是因为 method 方法返回了为 list<Object>类型,如果你的返回指定了 List<Person>就不会能放进去
DASungta
2019-08-07 11:06:52 +08:00
因为你 method 返回的是 List
1 楼正解,参考类型擦除
zhuawadao
2019-08-07 13:59:23 +08:00
@xidaduo 感谢给予方向
zhuawadao
2019-08-07 13:59:42 +08:00
@Raymon111111 感谢给予方向
Aruforce
2019-08-07 15:38:52 +08:00
Java 泛型只是编译器行为...不是 runtime 行为 ,运行时全是 Object reference
hfc
2019-08-07 16:12:57 +08:00
在 idea 里,调用 method()的地方应该会出现“黄色警告”,提醒你检查泛型类型
Deidra
2019-08-07 17:12:13 +08:00
推荐两个点给楼主:
1. Java 泛型实现了解一下,上面有大佬提到过
2. Java 限定符了解一下(虽然你的笔记里没有提到,但是以后一定会遇到)
lwj871731342
2019-08-07 17:28:44 +08:00
Java 的泛型只是一个语法糖,可以了解一下 Java 的泛型擦除机制,最后编译到字节码实际上还是 Object
jin7
2019-08-07 18:39:17 +08:00
helloQAQ
2019-08-08 09:28:44 +08:00
@airfling 但是为什么我 List<Object> list=new ArrayList<>();
List<String> ls=list;这样写也是会报编译错误 Type mismatch: cannot convert from List<Object> to List<String>
airfling
2019-08-08 11:17:01 +08:00
@helloQAQ object 是所有的父类,string 只是它的一个子类,你 List<String> ls=list 这样就是想把 list 中的 obejct 强转 string 的,肯定是不行的,你反过来是可以的
zhuawadao
2019-08-08 23:32:03 +08:00
@hfc 之前好像并没有提示的
zhuawadao
2019-08-08 23:32:37 +08:00
@Deidra 感谢给予方向
zhuawadao
2019-08-08 23:33:04 +08:00
@lwj871731342 感谢给予方向
zhuawadao
2019-08-08 23:34:43 +08:00
@helloQAQ 这篇文章里写的很详细 https://blog.csdn.net/briblue/article/details/76736356 可以看一下
jin7
2019-08-09 07:22:34 +08:00
@airfling 反过来也是不可以的 List<Object>和 List<String>没啥关系
hfc
2019-08-09 10:05:48 +08:00
>>> 之前好像并没有提示的

@zhuawadao 不应该吧,我这边敲了一把就有提示的
zhuawadao
2019-08-09 13:24:05 +08:00
@jin7 这篇文章里写的很详细 https://blog 点 csdn 点 net/briblue/article/details/76736356 可以看一下 泛型里不允许这样转型

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/589743

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX