gpt4 book ai didi

java - 在类上构建只读包装器

转载 作者:太空宇宙 更新时间:2023-11-04 08:25:59 24 4
gpt4 key购买 nike

我有一个类如下:

 class A{
// it has some getters and setters
}

还有一个名为 builder 类的类,它构建 A 类

class BuilderA{
// builds A and returns an instance.
}

现在我想准备一个只读的 A 类,以确保 Class newA 只具有 ClassA 的 getter,而不具有 setter。

我这样做是为了确保,如果我通过这个 newA,我是安全的,没有人可以使用 setter/getter 并对 newA 进行任何更改,如果我直接使用 A 类,就会发生这种情况。

谁能告诉我如何实现这个目标..?

最佳答案

这是一个例子:

public class Person {
String name;

public Person(String name) {
this.name = name;
}

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}
}

public class ImmutablePerson extends Person {

public ImmutablePerson(String name) {
super(name);
}

@Override
public void setName(String name) {
throw new UnsupportedOperationException();
}
}

public class PersonBuilder {
public static Person createMutablePerson(String name) {
return new Person(name);
}

public static Person createImmutablePerson(String name) {
return new ImmutablePerson(name);
}
}

虽然这可行,但我认为这不是用 Java 设计类的好方法。

引用 Joshua Bloch 的“Effective Java”,类应该是不可变的,除非你有充分的理由为什么它们应该是可变的。

关于java - 在类上构建只读包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8534450/

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