Лучшая практика: Java, статичный не последние переменные

Нет, любые таблицы стилей, помещенные в документ, будут применяться ко всему документу. Почему вы хотите это сделать?

23
задан James Van Boxtel 8 April 2009 в 18:26
поделиться

5 ответов

Сбор статистики может использовать неконечные переменные, например, для подсчета количества созданных экземпляров. С другой стороны, для такого рода ситуаций вы, возможно, захотите использовать AtomicLong и т. Д., В любом случае, в этот момент он может быть окончательным. В качестве альтернативы, если вы собираете более одного показателя, вы можете получить класс Statistics и окончательную ссылку на его экземпляр.

Конечно, довольно редко (оправданно) не финальный статические переменные.

21
ответ дан 29 November 2019 в 02:36
поделиться

При использовании в качестве кэша логирование, статистика или переключатель отладки являются очевидным разумным применением. Конечно, все закрытое.

Если у вас есть изменяемый объект, назначенный конечному полю, это морально совпадает с изменяемым полем.

Некоторые языки, такие как Fan, полностью запрещают изменяемую статику (или эквивалентную ей).

6
ответ дан 29 November 2019 в 02:36
поделиться

По моему опыту статические неконечные переменные должны использоваться только для одноэлементных экземпляров. Все остальное может быть либо более аккуратно заключено в одиночный тег (например, кеш), либо сделано окончательно (например, ссылка на регистратор). Однако я не верю в жесткие и быстрые правила, поэтому я бы посоветовался с солью. Тем не менее, я бы посоветовал тщательно изучить любой случай, когда вы рассматриваете возможность объявления неконечной статической переменной отдельно от экземпляра-одиночки, и посмотрите, может ли она быть реорганизована или реализована иначе - т. Е. Перемещена в одноэлементный контейнер или использовать окончательную ссылку на изменяемую переменную. объект.

2
ответ дан 29 November 2019 в 02:36
поделиться

Я думаю, что обертывание вашей статики и предоставление доступа через синглтоны (или, как минимум, через статические методы), как правило, хорошая идея , так как вы можете лучше контролировать доступ и избежать некоторых проблем гонки и проблем с синхронизацией.

0
ответ дан 29 November 2019 в 02:36
поделиться

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

0
ответ дан 29 November 2019 в 02:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: