Аналог static class (C#) на Java

125
28 сентября 2019, 12:20

Нагуглил несколько статей: в одной говорится, что синглтон идеален для хранения глобальных переменных. В другой - что он (синглтон) таки может быть уничтожен, и значения всех глобальных переменных исчезнут.

Вопрос у меня такой: в C# я объявлял static class, и мог пользоваться его содержимым везде по коду. В этом классе главными были именно переменные (свойства), с методами ситуация была не так критична. Что в Java наиболее близко к static class в C#?

Скорее всего, все же, ближе по смыслу синглтон - но тогда другой вопрос - в каких ситуациях он может быть удален системой, если я буду хранить ссылку на него в MainActivity?

Answer 1

Singleton и статический класс, это две принципиально разные вещи.

Singleton - паттерн проектирования, который гарантирует, что можно создать лишь один единственный экземпляр данного класса.

Статический класс - класс экземпляры, которого не возможно создать. В Java такое предусмотрено только для вложенных классов. Правда есть способ эмулировать статический класс для классов верхнего уровня.

Если Вам от такого класса нужны только некие константы, лучше объявить их в интерфейсе. Если же Вам нужен ещё и функционал, используйте Singleton, но ссылку на него храните в главном классе программы и инициализацию делайте там же.

Answer 2

Для хранения статических констант удобно сделать интерфейс - в интерфейсе все поля public static final. Активити в андроид уничтожается даже при повороте экрана, поэтому и ссылка на синглтон может потеряться и сборщик мусора его убьет.

READ ALSO
Возникает ошибка при выборке из бд в resultSet.next()

Возникает ошибка при выборке из бд в resultSet.next()

E/AndroidRuntime: FATAL EXCEPTION: main Process: comexample

158
Как из String JSON получить String anotherJSON, который он содержит

Как из String JSON получить String anotherJSON, который он содержит

Я получаю String jsonObject в контроллереСтруктура файла следующая:

170
Как выровнять на flex по линии?

Как выровнять на flex по линии?

Есть такая конструкция:

124