一个有个泛型的问题,还请大佬们指点一二 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhuawadao
V2EX    Java

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

  •  
  •   zhuawadao 2019-08-07 10:53:01 +08:00 4753 次点击
    这是一个创建于 2316 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我放到笔记里分享出来,链接如下:
    https://app.yinxiang.com/fx/19ca1d4c-73af-49ec-9442-d3b9e395bc5b
    21 条回复    2019-08-09 13:29:01 +08:00
    xidaduo
        1
    xidaduo  
       2019-08-07 10:57:46 +08:00   1
    Java 类型擦除了解一下
    Raymon111111
        2
    Raymon111111  
       2019-08-07 10:59:41 +08:00   1
    简单说 java 的泛型是假的

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

    @zhuawadao 不应该吧,我这边敲了一把就有提示的
    zhuawadao
        20
    zhuawadao  
    OP
       2019-08-09 13:24:05 +08:00
    @jin7 这篇文章里写的很详细 https://blog 点 csdn 点 net/briblue/article/details/76736356 可以看一下 泛型里不允许这样转型
    zhuawadao
        21
    zhuawadao  
    OP
       2019-08-09 13:29:01 +08:00
    @hfc 您说的对,确实右边有提示,之前开发只注意红色[捂脸],多谢提醒~[img]https://i1.100024.xyz/i/2019/08/09/lp99ao.png[/img]
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     906 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 21:16 PVG 05:16 LAX 13:16 JFK 16:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86