Несколько экземпляров v. Один статический экземпляр - PullRequest
0 голосов
/ 14 ноября 2011

Допустим, у меня есть этот пользовательский компонент.Это подклассы JMenuItem, и все экземпляры используют один и тот же объект Font, хотя ни один не использует один и тот же экземпляр.Например,

public abstract class JFooMenuItem extends JMenuItem{
    public JFooMenuItem(final String title){
        super(title);
        setFont(new Font("Courier New", Font.BOLD, 12));
    }
}

Теперь, учитывая, что может быть до 10+ пунктов меню, будет ли эффективнее сделать экземпляр Font общей переменной static, или этотекущая настройка (то есть код выше) просто отлично (с точки зрения управления памятью)?

Ответы [ 3 ]

2 голосов
/ 14 ноября 2011

Я бы сказал, используйте один именованный экземпляр, не из-за памяти, а потому, что если вы решите изменить шрифт, вам придется редактировать в 10+ местах.1006 * Редактировать: даже если вы используете подклассы, лучше объявить его как public static final, потому что Font является константой.Это более понятно.

1 голос
/ 14 ноября 2011

Я полагаю, что накладные расходы памяти, связанные с 10 экземпляром Font, не вызывают здесь серьезной проблемы. Однако из стиля кода ваш Font является константой во всех экземплярах этого типа, поэтому я думаю, что ваш код был бы более читабельным, если бы он обрабатывался таким образом.

0 голосов
/ 14 ноября 2011

Ваш код будет создавать новый объект Font каждый раз, когда вы создаете JFooMenuItem.

Если вы сделаете его статическим членом, Font выделяется только один раз.

...