我可以在构造函数中而不是在声明中定义静态属性时将其定型吗?
我知道如何创建可创建不可变实例的自定义类。
但是有可能使某个标准类成为不可变的对象吗?
例如对象,JPanel,日历或其他?
最佳答案
但是有可能使某个标准类成为不可变的对象吗?
不。Java中没有任何东西可以支持这一点。您所能做的就是限制参考文献的广泛发布,并确保可以访问该参考文献的任何代码都不会对其进行变异。您可以创建自己的包装器类型,该包装器类型仅公开只读操作,当然可以自由公开。
编辑:正如评论中指出的那样,在JDK中,对于集合有一些支持-并且Guava为它们提供了更加彻底的不可变的集合和构建器。但是,获取任何可变类型的对象并带给您不变的视图并没有通用的目的。