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

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

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

4

2 回答 2

4

不,没有办法将类型识别为不可变,更不用说绑定了。

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

例如:

interface Immutable {}

class Pair<A extends Immutable, B extends Immutable> {
}
于 2012-12-02T04:43:23.957 回答
2

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

于 2012-12-02T08:22:00.303 回答