gpt4 book ai didi

java - 可以从初始化 block 调用实例方法吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:23:05 25 4
gpt4 key购买 nike

我一直在复习 Java,并且读到“初始化程序 block 可以调用方法”

它能在构造函数没有执行的情况下调用实例方法吗?这只是不受欢迎吗?

编辑:我看到编译器允许这样做,所以问题是,这是一种安全的做法吗?

最佳答案

实例初始化 block 将作为任何构造函数执行的一部分被调用。所以你可以看到它好像被编译器复制到每个构造函数中。

这使您的问题更简单:它与询问“从构造函数调用实例方法是否安全?”的问题相同

只要您调用的方法不能在子类中被覆盖,就完全没问题。因此,如果您的方法是 privatefinal,则没有问题。

在这些情况下,最好有一种方法,而不是复制粘贴相同或相似的代码。

当子类可以重写一个方法时就会出现问题,因为那时您将从构造函数中调用该方法,但子类构造函数尚未执行。该方法将尝试访问尚未初始化的字段。

更多详情:What's wrong with overridable method calls in constructors?

关于java - 可以从初始化 block 调用实例方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26210467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com