gpt4 book ai didi

java - 可以将具有 Function 字段的 Java 类视为不可变的吗?

转载 作者:行者123 更新时间:2023-11-30 10:12:35 25 4
gpt4 key购买 nike

如果我有一个带有函数字段的类,它是不可变的吗?例如:

@Immutable
private static final class DependentBigtablePath extends BigtablePath {

private final BigtablePath delegate;
private final Function<String, String> derivationFunction;

private DependentBigtablePath( BigtablePath delegate, Function<String, String> derivationFunction) {
this.delegate = Preconditions.checkNotNull(delegate);
this.derivationFunction =Preconditions.checkNotNull(derivationFunction);
}
...
}

我们不知道函数实现类是否是不可变的,但这重要吗?

最佳答案

对于“不可变”的实际定义:不,如果不知道 DependentBigtablePath 的所有字段是否也是不可变的,则无法知道它是否不可变。一个明显的例子说明为什么会这样:

public class ClassThatWantsToBeImmutable {
public final MutableClass a;

//...constructor, etc.

@Override
public String toString() {
return a.toString();
}
}

如果 a 发生变异,使其 toString() 方法返回不同的内容,则 ClassThatWantsToBeImmutable 的行为(引用 a) 也发生变化。

关于java - 可以将具有 Function 字段的 Java 类视为不可变的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51829969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com