- 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() в наследнике.
(с)Хой