【问题标题】:Private constructor and final instance variables私有构造函数和最终实例变量
【发布时间】:2015-08-30 06:06:48
【问题描述】:

如果您使用未初始化的final 变量和private 默认构造函数创建一个类,编译器会告诉您您有未初始化的final 变量。这一切都很好,很花哨,只是构造函数现在只是无法访问的代码。那么这只是 Java 创建者的疏忽,还是有一个合乎逻辑的幕后原因?还是我假设构造函数是无法访问的代码是错误的?

【问题讨论】:

  • 在该类内部可访问的私有构造函数,具有私有构造函数的类的期望是有一个返回自身实例的静态方法
  • @ConvertToInt32,哦,我什至没有想到从类内部调用构造函数的代码。当我想确保它们不用于实例化对象时,我主要只使用私有构造函数
  • 看看单例模式

标签: java final private-constructor


【解决方案1】:

好吧,无论构造函数访问级别(私有/公共/受保护/包)如何,都会发生“尖叫”......这些问题是单独处理的。

在一个层面上,编译器确保 IF 构造函数(不知何故,奇迹般地)被调用,而不是所有最终变量都被初始化。

然后在另一个层面上,我们担心构造函数的可达性。这有点复杂,因为显然你可以稍后添加工厂方法,而且你可以使用“setAccessible(true)”通过丑陋的反射代码来实现它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    相关资源
    最近更新 更多