
package me.whiteship.chapter08.item54;
import java.util.List;
public class CheeseExample {
public static void main(String[] args) {
CheeseStore cheeseStore = new CheeseStore();
List<Cheese> cheese = cheeseStore.getCheese();
if (cheese != null && !cheese.isEmpty()) {
System.out.println("We have cheese: " + cheese);
} else {
System.out.println("We have no cheese");
}
}
}
package me.whiteship.chapter08.item54;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CheeseStore {
private final List<Cheese> cheesesInStock = new ArrayList<>();
private static final Cheese[] EMPTY_CHEESE_ARRAY = new Cheese[0];
public CheeseStore(Cheese... initialCheeses) {
for (Cheese cheese : initialCheeses) {
addCheese(cheese);
}
}
private void addCheese(Cheese cheese) {
cheesesInStock.add(cheese);
}
public List<Cheese> getCheese() {
return cheesesInStock.isEmpty() ? null : new ArrayList<>(cheesesInStock);
}
// public Cheese[] getCheeseArray() {
// return cheesesInStock.toArray(EMPTY_CHEESE_ARRAY);
// }
}
비어있으면 null을 return하는게 아니라 비어있는 Collections를 리턴한다.
package me.whiteship.chapter08.item54;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CheeseStore {
private final List<Cheese> cheesesInStock = new ArrayList<>();
private static final Cheese[] EMPTY_CHEESE_ARRAY = new Cheese[0];
public CheeseStore(Cheese... initialCheeses) {
for (Cheese cheese : initialCheeses) {
addCheese(cheese);
}
}
private void addCheese(Cheese cheese) {
cheesesInStock.add(cheese);
}
// public List<Cheese> getCheese() {
// return cheesesInStock.isEmpty() ? null : new ArrayList<>(cheesesInStock);
// }
public List<Cheese> getCheese() {
return new ArrayList<>(cheesesInStock);
}
// public Cheese[] getCheeseArray() {
// return cheesesInStock.toArray(EMPTY_CHEESE_ARRAY);
// }
}
package me.whiteship.chapter08.item54;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CheeseStore {
private final List<Cheese> cheesesInStock = new ArrayList<>();
private static final Cheese[] EMPTY_CHEESE_ARRAY = new Cheese[0];
public CheeseStore(Cheese... initialCheeses) {
for (Cheese cheese : initialCheeses) {
addCheese(cheese);
}
}
private void addCheese(Cheese cheese) {
cheesesInStock.add(cheese);
}
public List<Cheese> getCheese() {
return cheesesInStock.isEmpty() ? Collections.EMPTY_LIST : new ArrayList<>(cheesesInStock);
}
// public Cheese[] getCheeseArray() {
// return cheesesInStock.toArray(EMPTY_CHEESE_ARRAY);
// }
}
이렇게 할 수도 있다.
package me.whiteship.chapter08.item54;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CheeseStore {
private final List<Cheese> cheesesInStock = new ArrayList<>();
private static final Cheese[] EMPTY_CHEESE_ARRAY = new Cheese[0];
public CheeseStore(Cheese... initialCheeses) {
for (Cheese cheese : initialCheeses) {
addCheese(cheese);
}
}
private void addCheese(Cheese cheese) {
cheesesInStock.add(cheese);
}
public List<Cheese> getCheese() {
return cheesesInStock.isEmpty() ? null : new ArrayList<>(cheesesInStock);
}
public Cheese[] getCheeseArray() {
return cheesesInStock.toArray(EMPTY_CHEESE_ARRAY);
}
}
null을 return하는 코드를 만들면 불편하다.