![]() |
1
8
有效Java中的Josh Bloch建议使用静态工厂方法,尽管对于这种情况我找不到任何参数。然而,在
Java Concurrency in Practice
特别是为了防止泄漏参考
但是,这可能不适用于您使用的DI注释。 |
![]() |
2
9
它还严重破坏了遗产。如果在链中调用构造函数来实例化类的子类,则可以调用在子类中被重写的方法,该方法依赖于在子类构造函数运行之前未建立的不变量。 |
![]() |
3
4
您应该小心使用构造函数中的实例方法,因为类尚未完全构造。如果一个被调用的方法使用了一个尚未初始化的成员,那么,坏的事情就会发生。 |
![]() |
4
0
可以使用一个静态方法,该方法获取依赖项并构造并返回一个新实例,并标记构造函数的朋友。我不确定朋友是否存在于Java中(它是包保护的),但这可能不是最好的方式。您还可以使用另一个类(工厂)来创建MyClass。 编辑:哇,另一个帖子也提出了同样的问题。看起来你可以让Java中的构造函数是私有的。在vb.net中不能这样做(不确定C)…很酷… |
![]() |
5
0
是的,它实际上是非法的,它甚至不应该编译(但我相信是这样) 考虑构建器模式(并倾向于不可变,在构建器模式术语中,这意味着您不能两次调用任何setter,也不能在对象被“使用”之后调用任何setter——此时调用setter可能会引发运行时异常)。 您可以在名为 “有效的Java重载:这次是真正的” ,例如这里: |
![]() |
KiraHoneybee · 具有构造函数参数的模板化类 3 年前 |
![]() |
nick2225 · 隐式调用复制构造函数? 3 年前 |
![]() |
nohaga · 为什么在本例中p3需要默认构造函数? 3 年前 |
![]() |
Aadil Hoda · 为什么类类型的成员需要初始化? 3 年前 |
![]() |
EloiGG · 具有任意类型的变量的可数的C++函数 3 年前 |