V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
gzk329
V2EX  ›  Java

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

  •  
  •   gzk329 · Aug 24, 2020 · 2845 views
    This topic created in 2081 days ago, the information mentioned may be changed or developed.

    图

    10 replies    2020-08-24 18:25:18 +08:00
    nikandaoleshenme
        1
    nikandaoleshenme  
       Aug 24, 2020
    https://github.com/GZK0329/private_demos/blob/master/捕获 021.JPG

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

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

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

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

    https://gist.github.com/sutra/de68eeb9f152b5acb342ffab4c2e87d8
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3250 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 13:08 · PVG 21:08 · LAX 06:08 · JFK 09:08
    ♥ Do have faith in what you're doing.