- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
class CellEditor {
protected CellEditor(Composite parent, int style) {
this.style = style;
create(parent);
}
public void create(Composite parent) { ... }
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+71
class CellEditor {
protected CellEditor(Composite parent, int style) {
this.style = style;
create(parent);
}
public void create(Composite parent) { ... }
}
А вот это уже JFace...
5 строка подарил много положительных эмоций, при попытке сконструировать кастомный CellEditor
P. S. Для большей очевидности можно слово abstract добавить в 1-й строке
кэп, а в чем говно-то?
MyCellEditor(Composite parent, int style, int numberOfLines) {
super(parent, style);
this.numberOfLines = numberOfLines;
}, ну и в методе create() соответственно написать код в стиле
...
combo.setVisibleLinesCount(this.numberOf Lines)
...
Да как говорится, не тут-то было. В момент когда я вызываю super(parent, style) вызывается перегруженный мною метод create(), и в данный момент переменная this.numberOfLines не определена (точнее равна нулю, т. к. это поле). И красивых способов исправить данную ситуацию нет.
Вывод: НИКОГДА НЕ ПЕРЕГРУЖАЙТЕ МЕТОД ВЫЗЫВАЕМЫЙ ИЗ КОНСТРУКТОРА!!!
а поменять местами не судьба?
не раскрыта суть метода create(). Нахер его перегружать? Заведите свой .MyCreate() в наследнике.
(с)Хой