2009-06-19 5 views
0

私はセルエディタを作成していますが、私はこれを他のコードで行っています。私は、オブジェクトを作成し、このように床に落としています:
ButtonCellEditor buttonColumn = new ButtonCellEditor(table, 2);床にオブジェクトを落とす

このクラスは、テーブルを取り、それにするTableColumnModelとカスタムセルレンダラーを設定します。その後、メソッドは終了し、私はもうbuttonColumnオブジェクトを参照しません。

このように、これを行うこととこれを行うことには違いがありますか?
new ButtonCellEditor(table, 2);

これは本当に間違っていますか?

答えて

9

コードに使用されていない変数を使用することは避けてください。また、コンストラクタは(その名前の状態で)オブジェクトを初期化するメソッドですが、これはあなたのケースでは行われません。

は、私はあなたが静的メソッド代わりを持ってお勧め:それは自分自身を初期化し、その後、いくつかのアクションを実行するためのparamsを取るとき

ButtonCellEditor.niceNameHere(table, 2); 

私はここで、コンストラクタが適切だと思うことができる唯一のケースですしかし、内部の行動を行うためではなく、これはあなたのようなものではありません。

+1

+1は、コンストラクタの副作用を指摘しています。ただし、この場合は – akf

+1

となります。ただし、新しいオブジェクトに渡された変数を含めることは適切でない場合があります。 CellEditorはJTableをメンバーとして持つべきではありません。 – akf

1

ButtonCellEditorを作成する方法のどちらにも問題はありません。ただし、後でそのオブジェクトを参照する場合は、方法2を使用して、そのようにする方法がありません。方法1では、少なくともbuttonColumn.method()と言うことができます。

0

私が知る限り、具体的な違いはありません。

何も間違っていません - オブジェクトを構築する副作用を唯一の理由(実際には非常に優れたAPIデザインであるとは限りませんが、ここでは無関係です)より短いフォームが好きです。

0

これらは同じですが、なぜそれを実行しているのかについてのコメントは順調である可能性があります。さもなければ誰かがそれに沿って来て、それを削除するかもしれない、それは調査なしでは何もしていないと思う。

あなたはまた、より明示的なことと2例の間には実質的な違いはありません

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

0

を呼び出すことができます。 2番目のケースでは、通常はガベージコレクションされる匿名変数が作成されます。 2番目のケースでは、いくつかの入力を省き、やや読みやすくなります。読者は、作成されたオブジェクト(最初のバージョンを選択した場合)で参照を見つけることを期待し、見つからない場合には驚くかもしれません。

いずれの場合でも、静的メソッドがそのような場合に適している可能性があります。

関連する問題