0

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

4

1 回答 1

1

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

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

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

于 2015-08-30T06:28:33.203 回答