- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
class JNewConnectionPanel extends JPanel {
public JNewConnectionPanel() {
this(true, false);
}
public JNewConnectionPanel(final boolean ok, final boolean cancel) {
// ...
if (ok) {
// ...
}
if (cancel) {
// ...
}
// ...
}
// ...
}
2. final переменная видна из анонимных классов, таких, как слушатели
3. вообще final (не параметрам и не конструктора, а, например, полям) помогает контролировать изменяемость параметров - в яве нужно по возможности повторно использовать обьекты
final - если наследование не имеет смысел
Блох говорил что все классы должны быть или абстрактными (во всяком случае с мануалом по расширеню в жавадоке) или финальными.
Дескать в идеальной архитектуре третьего не до. Иначе кто-то наверняка нарушит контракт (принцип лискоу)
я допускаю третий случай, что можно пользоваться классом и так, а можно добавить функциональности. Но при этом я большинство методов делаю финальными
Также абсолютно не имеет смысла ставить final ссылкам на коллекции - само содержание коллекции можно изменить.
Потому в сишке еще есть смысл ставить const куда не лень, а в Java же final для переменной (а не класса или метода) имеет смысл только для доступа из анонимного класса к внешней переменной.
1.final это не имеет значения, что по значению
этот кусок компилируется, хоть и не имеет смысла. второй кусок просто не скомпилируется
2. final для поля, например, коллекции позволит ее изменение, но запретит изменять ссылку на нее, что может как помочь повторно использовать обьекты (например, заставит написать v.clear() вместо v=new Vector() ), так и избавит от необходимости при обновлении синхронизировать содержание - например, с визуальным элементом навроде JList.
если же нам надо запретить изменение коллекции, можно воспользоваться одним из утилитных методов, например, обернуть в неизменяемый список, методом Collections.unmodifiableList(list)
Сколько там строчек после каждого if?
и что за названия переменных? Не лучше ли передавать массив типов кнопок, которые можно нажать?