
1 xidaduo 2019-08-07 10:57:46 +08:00 Java 类型擦除了解一下 |
2 Raymon111111 2019-08-07 10:59:41 +08:00 简单说 java 的泛型是假的 你可以按照这个思路多搜点文章看看就懂了 |
3 airfling 2019-08-07 11:04:13 +08:00 java 与其说是泛型倒不如看作接口更好一点,你的第一问是因为 method 方法返回了为 list<Object>类型,如果你的返回指定了 List<Person>就不会能放进去 |
4 DASungta 2019-08-07 11:06:52 +08:00 因为你 method 返回的是 List 1 楼正解,参考类型擦除 |
6 zhuawadao OP @Raymon111111 感谢给予方向 |
7 Aruforce nbsp;2019-08-07 15:38:52 +08:00 Java 泛型只是编译器行为...不是 runtime 行为 ,运行时全是 Object reference |
8 hfc 2019-08-07 16:12:57 +08:00 在 idea 里,调用 method()的地方应该会出现“黄色警告”,提醒你检查泛型类型 |
9 Deidra 2019-08-07 17:12:13 +08:00 推荐两个点给楼主: 1. Java 泛型实现了解一下,上面有大佬提到过 2. Java 限定符了解一下(虽然你的笔记里没有提到,但是以后一定会遇到) |
10 lwj871731342 2019-08-07 17:28:44 +08:00 Java 的泛型只是一个语法糖,可以了解一下 Java 的泛型擦除机制,最后编译到字节码实际上还是 Object |
11 jin7 2019-08-07 18:39:17 +08:00 |
12 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> |
13 airfling 2019-08-08 11:17:01 +08:00 @helloQAQ object 是所有的父类,string 只是它的一个子类,你 List<String> ls=list 这样就是想把 list 中的 obejct 强转 string 的,肯定是不行的,你反过来是可以的 |
16 zhuawadao OP @lwj871731342 感谢给予方向 |
17 zhuawadao OP @helloQAQ 这篇文章里写的很详细 https://blog.csdn.net/briblue/article/details/76736356 可以看一下 |
20 zhuawadao OP @jin7 这篇文章里写的很详细 https://blog 点 csdn 点 net/briblue/article/details/76736356 可以看一下 泛型里不允许这样转型 |
21 zhuawadao OP @hfc 您说的对,确实右边有提示,之前开发只注意红色[捂脸],多谢提醒~[img]https://i1.100024.xyz/i/2019/08/09/lp99ao.png[/img] |