Я пытаюсь использовать шаблон Singleton дизайн в ItemControl, но Android-студия говорит, что я не может присвоить значение переменной окончательное «например». Как я могу скомпилировать мой код, если переменная должна быть статической окончательной?Singleton Design Pattern не может присвоить значение переменной экземпляра окончательной
public final class ItemControl {
private final Map<Long, Item> itemMap = new HashMap<>();
private static final ItemControl instance;
private ItemControl() { }
public static synchronized ItemControl getInstance() {
if(instance == null) {
instance = new ItemControl();
}
return instance;
}
public void addItem(Item item) {
itemMap.put(item.getId(), item);
}
public List<Item> retrieveItems() {
if(itemMap.isEmpty()) {
List<Item> items = carregarItems();
if(items != null) {
for(Item item : items) {
itemMap.put(item.getId(), item);
}
}
}
return new ArrayList<>(itemMap.values());
}
private List<Item> carregarItems() {
List<Item> items = new ArrayList<>();
Item.Builder livroBuilder = new Item.Builder(System.nanoTime(), "Java for Beginners")
.setAno(2013).setAutor("Glauber Rocha").setQuantidade(3)
.setDescricao("Livro para programadores iniciantes.");
Item.Builder revistaBuilder = new Item.Builder(System.nanoTime(), "Geek on the table")
.setAno(2013).setAutor("Robson Duarte").setQuantidade(2)
.setDescricao("Revista para geeks.");
items.add(livroBuilder.build());
items.add(revistaBuilder.build());
return items;
}
}
Зачем нужны эти переменные статические и конечные –
Дизайн модели Singleton требует этого. Или нет? –
не вы не нуждаетесь в этом –