Сбрасывание предметов на пол - PullRequest
0 голосов
/ 19 июня 2009

Я создаю редактор ячеек, но я сделал (и видел) это в другом коде. Я создаю объект, а затем бросаю его на пол вот так:
ButtonCellEditor buttonColumn = new ButtonCellEditor(table, 2);

Этот класс берет таблицу и устанавливает для нее TableColumnModel и пользовательские средства визуализации ячеек. Затем метод заканчивается, и я больше не ссылаюсь на объект buttonColumn.

Итак, есть ли разница между выполнением вышеизложенного и выполнением этого (что также работает)?
new ButtonCellEditor(table, 2);

Что-то не так с этим?

Ответы [ 5 ]

9 голосов
/ 19 июня 2009

В вашем коде не должно быть неиспользуемых переменных, что делает его менее понятным. Кроме того, конструктор - это (как следует из его названия) метод для инициализации объекта, в вашем случае это еще не сделано.

Я предлагаю вам использовать статический метод вместо:

ButtonCellEditor.niceNameHere(table, 2);

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

1 голос
/ 19 июня 2009

Нет ничего плохого в любом из этих способов создания ButtonCellEditor. Однако, если вы позже захотите сослаться на этот объект, у второго метода у вас не будет возможности сделать это. С помощью метода 1 вы можете как минимум сказать buttonColumn.method ().

0 голосов
/ 19 июня 2009

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

В любом случае статический метод может быть более подходящим для таких случаев.

0 голосов
/ 19 июня 2009

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

Вы также можете быть более точным и позвонить

table.getColumn(2).setCellEditor(new ButtonCellEditor());

0 голосов
/ 19 июня 2009

Насколько я знаю, ощутимой разницы нет.

В этом нет ничего плохого - я бы предпочел более короткую форму, если единственная причина на самом деле состоит в том, чтобы получить побочные эффекты при создании объекта (что само по себе не обязательно является очень хорошим дизайном API, IMO, но здесь это не имеет значения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...