Once your beanList
has been initialized, you can do
beanList = Collections.unmodifiableList(beanList);
to make it unmodifiable. (See Immutable vs Unmodifiable collection)
If you have both internal methods that should be able to modify the list, and public methods that should not allow modification, I'd suggest you do
// public facing method where clients should not be able to modify list
public List<Bean> getImmutableList(int size) {
return Collections.unmodifiableList(getMutableList(size));
}
// private internal method (to be used from main in your case)
private List<Bean> getMutableList(int size) {
List<Bean> beanList = new ArrayList<Bean>();
int i = 0;
while(i < size) {
Bean bean = new Bean("name" + i, "address" + i, i + 18);
beanList.add(bean);
i++;
}
return beanList;
}
(Your Bean
objects already seem immutable.)
As a side-note: If you happen to be using Java 8+, your getMutableList
can be expressed as follows:
return IntStream.range(0, size)
.mapToObj(i -> new Bean("name" + i, "address" + i, i + 18))
.collect(Collectors.toCollection(ArrayList::new));
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…