zhuawadao
V2EX  ›  Java

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

  •  
  •   zhuawadao · Aug 7, 2019 · 5585 views
    This topic created in 2644 days ago, the information mentioned may be changed or developed.
    我放到笔记里分享出来,链接如下:
    https://app.yinxiang.com/fx/19ca1d4c-73af-49ec-9442-d3b9e395bc5b
    21 replies  •  2019-08-09 13:29:01 +08:00
    xidaduo
    xidaduo
    Aug 7, 2019❤️1
    1
    Java 类型擦除了解一下
    Raymon111111
    Raymon111111
    Aug 7, 2019❤️1
    2
    简单说 java 的泛型是假的

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

    @zhuawadao 不应该吧,我这边敲了一把就有提示的
    zhuawadao
    zhuawadao
    OP
    Aug 9, 2019
    20
    @jin7 这篇文章里写的很详细 https://blog 点 csdn 点 net/briblue/article/details/76736356 可以看一下 泛型里不允许这样转型
    zhuawadao
    zhuawadao
    OP
    Aug 9, 2019
    21
    @hfc 您说的对,确实右边有提示,之前开发只注意红色[捂脸],多谢提醒~[img]https://i1.100024.xyz/i/2019/08/09/lp99ao.png[/img]
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1337 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 20:10 · PVG 04:10 · LAX 12:10 · JFK 15:10
    ♥ Do have faith in what you're doing.