V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gzk329
V2EX  ›  Java

接口实现类的实例化对象 不可以强转成接口类型嘛?

  •  
  •   gzk329 · 2020-08-24 16:56:52 +08:00 · 1892 次点击
    这是一个创建于 1332 天前的主题,其中的信息可能已经有所发展或是发生改变。

    图

    10 条回复    2020-08-24 18:25:18 +08:00
    nikandaoleshenme
        1
    nikandaoleshenme  
       2020-08-24 17:02:57 +08:00
    https://github.com/GZK0329/private_demos/blob/master/捕获 021.JPG

    把图片放出来撒,私有的怎么看
    gzk329
        2
    gzk329  
    OP
       2020-08-24 17:12:43 +08:00
    就比如一个接口 User 一个类 UserImpl 实现接口 User
    public class UserImpl implements User{
    private User user = new UserImpl();
    }
    这样就是会报错 栈溢出
    java.lang.StackOverflowError

    v 站我找不到编辑
    yanshenxian
        3
    yanshenxian  
       2020-08-24 17:24:20 +08:00
    @gzk329 #2 为什么会有这种写法。。看标题还以为你说的是 java 的多态

    成员变量初始化在构造函数之前,你这不就死循环了,
    AlisaDestiny
        4
    AlisaDestiny  
       2020-08-24 17:37:12 +08:00
    @gzk329 你先看看类的初始化逻辑吧,你这是在套娃。
    Oktfolio
        5
    Oktfolio  
       2020-08-24 17:39:49 +08:00
    套娃 + 1
    Cbdy
        6
    Cbdy  
       2020-08-24 17:43:13 +08:00
    你要是特别想这样写,可以这样

    @lombok.Getter(lazy = true)
    private final User user = new UserImpl();
    jackmrzhou
        7
    jackmrzhou  
       2020-08-24 17:43:25 +08:00 via iPhone
    楼主多半 golang 写多了
    gzk329
        8
    gzk329  
    OP
       2020-08-24 18:18:57 +08:00
    @yanshenxian 好的 非常感谢
    sagaxu
        9
    sagaxu  
       2020-08-24 18:21:44 +08:00 via Android
    无限套娃
    sutra
        10
    sutra  
       2020-08-24 18:25:18 +08:00
    这和接口无关。把问题简化一下,就和上面的哥哥们说的一样,套娃:

    https://gist.github.com/sutra/de68eeb9f152b5acb342ffab4c2e87d8
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5235 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:20 · PVG 09:20 · LAX 18:20 · JFK 21:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.