Константы значка Java - Являются статическими константами хорошо?

Вы можете поменять NaN на 0 и попробовать вычислить косинусное подобие.

5
задан Draemon 15 December 2008 в 19:32
поделиться

5 ответов

Если бы Вы хотите сохранить Вас значками как статические константы, я извлек бы инстанцирование объектов ImageIcon в статический метод;

public static final Icon ok = icon("ok.png");


private static Icon icon(String path) {

    URL resource = Icons.class.getResource("/icons/" + path);
    if (resource == null) {
        // Log something...
        return null;
    }
    return new ImageIcon(resource);
}

Таким образом, Вы имеете контроль каждый раз, когда что-то перестало работать, и Вы не должны повторять себя в инстанцировании.

Кроме того, я сделал бы финал констант.

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

1
ответ дан 14 December 2019 в 13:50
поделиться

Можно хотеть отметить константы как финал.

2
ответ дан 14 December 2019 в 13:50
поделиться

Это, кажется, довольно простой способ сделать это. Хотя я назвал бы изображения с тем же именем как, что они для ("ok.png", "cancel.png"). И удостоверьтесь, что ясно, что удаление или переименование изображений могут вызвать проблемы.

0
ответ дан 14 December 2019 в 13:50
поделиться

Я вижу две проблемы с этим, оба могли бы быть приемлемыми:

  1. Станет трудным отладить, если Ваши значки не будут найдены или не смогут быть загружены по некоторым причинам. Код, который работает в статических инициализаторах, может быть хитрым, потому что легко "освободить" исключение.
  2. Класс никогда не будет, вероятно, разгружаться, и поэтому ресурс, используемый Значками, никогда не будет освобожденная пчела.

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

Номер 2, вероятно, приемлем, так как значки обычно используются всюду по всему времени выполнения приложения, и они не были бы освобождены задолго до выходов приложения так или иначе.

Так, в целом, я сказал бы, что это прекрасно.

3
ответ дан 14 December 2019 в 13:50
поделиться

Это, кажется, стандартный способ сделать вещи, но у меня были проблемы с прежде.

Если Вы будете использовать Eclipse со Знатоком и сохраните эти значки в каталоге ресурса знатока, когда Eclipse сделает одну из своих автоматических сборок, он не скопирует файлы значков в Ваш каталог цели/классов. Это вызовет исключение на этапе выполнения, когда оно не сможет найти значки.

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

0
ответ дан 14 December 2019 в 13:50
поделиться
Другие вопросы по тегам:

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