I am trying to use the Singleton design pattern in ItemControl, but Android Studio says that I cannot assign a value to final variable 'instance'. How can I compile my code if the variable must be static final?
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;
    }
}
 
     
     
     
    