我正在创建一个单元格编辑器,但我已经在其他代码中完成了(并且看到过)。我正在创建一个物体,然后将它放在地板上,如下所示:
ButtonCellEditor buttonColumn = new ButtonCellEditor(table, 2);
此类获取表并为其设置TableColumnModel和自定义单元格渲染器。然后,该方法结束,我不再引用buttonColumn对象。
那么,做上述和做这件事之间是否有区别(这也有效)?
new ButtonCellEditor(table, 2);
这样做真的有什么问题吗?
答案 0 :(得分:9)
您的代码中不应该使用未使用的变量,这使得它不太清楚。此外,构造函数(正如其名称所述)是一种初始化对象的方法,在您的情况下,这种方法尚未完成。
我建议您改为使用静态方法:
ButtonCellEditor.niceNameHere(table, 2);
我能想到的唯一一个构造函数足够的情况是,它需要params来初始化自己然后再执行一些操作,但不能在内部执行操作,这与你的不一样。
答案 1 :(得分:1)
创建ButtonCellEditor的方式都没有错。但是,如果您以后想要引用该对象,则使用方法二,您无法这样做。使用方法1,您至少可以说buttonColumn.method()。
答案 2 :(得分:0)
据我所知,没有实质性的区别。
也没有错 - 我更喜欢更短的形式,如果唯一的原因是为了获得构造对象的副作用(这本身不一定是一个非常好的API设计,IMO,但这在这里是无关紧要的。)< / p>
答案 3 :(得分:0)
它们是相同的,但是关于你为什么这样做的评论可能是有序的。否则有人可能会出现并删除它,认为这是一个没有调查的无操作。
你也可以更明确地打电话
table.getColumn(2).setCellEditor(new ButtonCellEditor());
答案 4 :(得分:0)
两种情况之间没有真正的区别。在第二种情况下,将创建一个通常是垃圾收集的匿名变量。第二种情况也会为你节省一些打字,并且更具可读性。读者可能希望在创建的对象上找到引用(如果您选择第一个版本),如果找不到,则会感到惊讶。
在任何情况下,静态方法可能更适合此类情况。