Java jLabel.setText()方法不使用String重载

时间:2011-09-09 06:21:02

标签: java swing

在jLabel组件中,假设我有此代码,

JLabel jLabel = new JLabel();
jLabel.setText( 123 ) ;

它会产生错误。但写下这个,

jLabel.setText( 123 + "" ) ;

强制将int part作为字符串。但我不认为像这样写int是个好主意!这个方法是否有任何重载的兄弟姐妹没有抓住String?

2 个答案:

答案 0 :(得分:2)

您在这里做的不多,setText只接受String参数。或者,如果您发现这更具可读性,则可以执行jLabel.setText(Integer.toString(123))

至于123 + ""部分,每当你添加一些变量并且其中至少有一个是String时,编译器会自动调用其他变量toString并连接所有字符串。 somevar + ""(空字符串)是一种快速调用somevar.toString()的方式。

答案 1 :(得分:2)

编译器是正确的。您正在将数字传递给需要该字符串的方法。第二种方法工作的原因是jvm取数字和字符串,并将它们加在一起,返回一个字符串,这就是它工作的原因。你的另一个选择是做一些Integer.toString(123);