Как указано в комментариях, вы можете вытащить поле 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 для более подробного объяснения.
так как не существует класса 'Gson', возможно, нет, поскольку вы инициализируете его из другого класса. – SomeJavaGuy
Класс 'Holder' здесь бесполезен. Просто принесите поле в 'GsonUtils'. –
публичный класс GsonUtils { частный Gson gson; частный GsonUtils() { gson = new Gson(); } закрытый статический класс Держатель { статический окончательный GsonUtils INSTANCE = новый GsonUtils(); } общественный статический GsonUtils getInstance() { возвращение Holder.INSTANCE; } public Gson getGson() { return gson; } } –