在面向对象编程中,Getter 方法用于获取对象的属性值。返回不可修改的列表是一种常见的做法,以确保调用者无法通过返回的列表修改原始数据,从而保持数据的封装性和安全性。
以下是使用 Java 标准库和 Guava 库实现返回不可修改列表的示例:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Example {
private List<String> internalList = new ArrayList<>();
public Example() {
internalList.add("Item1");
internalList.add("Item2");
}
public List<String> getUnmodifiableList() {
return Collections.unmodifiableList(internalList);
}
public static void main(String[] args) {
Example example = new Example();
List<String> list = example.getUnmodifiableList();
// 尝试修改列表会抛出 UnsupportedOperationException
// list.add("Item3"); // 这行代码会抛出异常
}
}
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.List;
public class Example {
private List<String> internalList = new ArrayList<>();
public Example() {
internalList.add("Item1");
internalList.add("Item2");
}
public ImmutableList<String> getUnmodifiableList() {
return ImmutableList.copyOf(internalList);
}
public static void main(String[] args) {
Example example = new Example();
ImmutableList<String> list = example.getUnmodifiableList();
// 尝试修改列表会抛出 UnsupportedOperationException
// list.add("Item3"); // 这行代码会抛出异常
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Example {
private List<String> internalList = new ArrayList<>();
public Example() {
internalList.add("Item1");
internalList.add("Item2");
}
public List<String> getUnmodifiableList() {
return Collections.unmodifiableList(new ArrayList<>(internalList));
}
public static void main(String[] args) {
Example example = new Example();
List<String> list = example.getUnmodifiableList();
// 即使修改原始列表,返回的不可修改列表也不会受到影响
example.internalList.add("Item3");
System.out.println(list); // 输出: [Item1, Item2]
}
}
通过这种方式,可以确保返回的不可修改列表在任何情况下都不会被修改,从而提高代码的安全性和可靠性。
领取专属 10元无门槛券
手把手带您无忧上云