Java 中的不可变 instances/functional 接口

Inmutable instances/functional interfaces in Java

有什么方法可以强制实例或功能接口静态方法输出以 Collections.immutable(x) 之类的方式不可变?

例如,我想创建某种 Comparator 功能接口,并禁止像“.thenComparing()”这样的链式操作用于一些静态构建器类方法创建的实例。

遗憾的是,Java 集合类型缺少不可变集合,但是 google guava 带有许多不可变集合(参见 https://code.google.com/p/guava-libraries/wiki/ImmutableCollectionsExplained),因此您可以将它们用作 return 类型。 然而,我看不出这与比较能力有什么关系,因为比较不会改变东西。

您可以通过 returning 一个不可变 class 的实例来强制您的 return 值不可变。在不知道 class 做什么的情况下,没有通用的方法可以使 class 的实例不可变。

您问题的第二段包含一个错误的假设,即 .thenComparing(...) 使比较器可变。 thenComparing 保留原来的比较器并制作一个新的比较器。