2016-12-21 5 views
-3
public class GsonUtils { 

    private static class Holder { 
     static final Gson INSTANCE = new Gson(); 
    } 

    public static Gson getInstance() { 
     return Holder.INSTANCE; 
    } 
} 

все это;Может ли кто-нибудь увидеть, подходит ли мой синглтон-класс?

+1

так как не существует класса 'Gson', возможно, нет, поскольку вы инициализируете его из другого класса. – SomeJavaGuy

+1

Класс 'Holder' здесь бесполезен. Просто принесите поле в 'GsonUtils'. –

+0

публичный класс GsonUtils { частный Gson gson; частный GsonUtils() { gson = new Gson(); } закрытый статический класс Держатель { статический окончательный GsonUtils INSTANCE = новый GsonUtils(); } общественный статический GsonUtils getInstance() { возвращение Holder.INSTANCE; } public Gson getGson() { return gson; } } –

ответ

0

Как указано в комментариях, вы можете вытащить поле INSTANCE до уровня класса. Нет необходимости в другой инкапсуляции, которая ничего не делает.

public class GsonUtils { 
    private static final Gson INSTANCE = new Gson(); 

    private GsonUtils() { 
     // you do not want someone to instantiate this 
    } 

    public static Gson getInstance() { 
     return INSTANCE; 
    } 
} 

Вы можете также ленивым инициализировать синглтон:

public class GsonUtils { 
    private static Gson INSTANCE; 

    private GsonUtils() { 
     // you do not want someone to instantiate this 
    } 

    public static Gson getInstance() { 
     if(INSTANCE == null) { 
      INSTANCE = new Gson(); 
     } 
     return INSTANCE; 
    } 
} 

См Java Singleton Pattern для более подробного объяснения.

+0

спасибо за помощь !!! –

 Смежные вопросы

  • Нет связанных вопросов^_^