如何确保类型参数是不可变的

时间:2012-12-02 04:36:25

标签: java generics

class Pair<A,B> {
    final A first;
    final B sec;

    Pair(A f, B s){
        this.first = f;
        this.sec = s;
    }
}

有没有办法确保A和B是不可变类型?

2 个答案:

答案 0 :(得分:4)

没有。没有办法识别,更不用说绑定一个类型是不可变的。

您可以创建一个标记界面(一个没有方法,如Serializable),在项目中用于标识不可变类,并让您的团队遵守它。

例如:

interface Immutable {}

class Pair<A extends Immutable, B extends Immutable> {
}

答案 1 :(得分:2)

没有。实际上,语言中根本没有概念或“可变”或“不可变”类型。 “不可变”只是我们用来描述碰巧不提供允许您更改任何内部状态的任何方法或公共字段的类型的术语。除此之外,“可变”和“不可变”类型的工作方式没有区别。