我有一个面试问题,面试官问我:“你将如何在java中创建一个不可变的类,哪个类将有超过100个字段?”
正如我们所知道的,要创建不可变的类,我们需要将一个类声明为final,需要将所有字段声明为final,并且该类中不应该存在任何setter方法。我们需要在构造函数中初始化这些字段。
但是当我们有超过10个或更多的字段时会发生什么呢?我们不能在构造函数中传递所有的字段,对吗?在这种情况下,我们如何创建一个不可变的类?
发布于 2019-06-14 20:51:13
这里的字段计数是无关紧要的,即使在一个类中有几个以上的字段是可怕的设计,并且是类应该被重构的标志。要使类不可变,您需要以下条件:
Builder内部类,要么简单地包含所有字段作为构造函数参数(强烈建议将这个类作为final。这将防止类扩展和调用super.顺便说一句,据我所知,Java构造函数可以处理255 parameters。因此,对于这次面试,构造器参数将是一种选择。
https://stackoverflow.com/questions/56598456
复制相似问题