我想更改ArrayList中的元素名称,而不更改其值。喜欢 :-
ArrayList<Integer> array1 = new ArrayList<>();
int num = 1;
array1.add(num);
现在我想将num更改为number,但是它的值将是1。(可以吗?)
我想在摆动组合框中显示ArrayList中的所有元素,但是某些变量显示了奇怪的名称,例如“ Client @ 45673 ...”。但我希望用户看到一个描述性名称。这就是为什么我想重命名变量。
好的,因此你正在使用“更改变量的名称”在众所周知的花园小径上徘徊。
首先,它不是变量。当你将某项放入集合中时,Java不会记住你曾经在变量中拥有值。
其次,一般而言,值(尤其是对象)没有名称……除非你在类定义中专门实现了某种“名称”字段。
但我认为这句话的线索是:
...但是一些变量显示了奇怪的名称,例如“ Client @ 45673 ...”
那不是名字!看起来像默认实现的输出1的toString
,你的Client
类继承java.lang.Object
。
如果要打印/显示更有意义的内容,则你的Client
类需要使用其自己的实现重写该toString()
方法。
例如:
public class Client {
private String myDescription;
public Client(...) {
...
myDescription = /* something */
}
@Override
public String toString() {
return myDescription;
}
}
toString
只要方法表示为字符串,你的方法就可以返回你想要的任何内容。
顺便说一句,如果要打印问题中的array1
对象,则会看到实际值1而不是“名称”(如你所说的)。这是因为java.lang.Integer
重写该toString()
方法。
1-默认toString()
结果由内部类名称和对象的身份哈希码值组成。后者是JVM生成的幻数。它不能保证唯一,但是可以保证它在对象的整个生命周期中都不会改变。无论如何,你不能更改该方法生成的字符串...除非覆盖它。