它改变了存储在表中的Car 实例的'Color' 属性的值; 未创建新值。
您没有显示myIntHashTable 的类型。请注意,java.util.Map 通常比传统的 java.util.Hashtable 更受欢迎。后者进行锁定。
另外,您是否按连续整数值索引这些汽车?如果是这样,您可能需要某种形式的List。
你可能想要这样的东西:
final Map<Integer, Car> cars = new HashMap<Integer, Car>();
final Car someCar = new Car();
cars.put(1, someCar);
final Car carInTable = cars.get(1). // refers to same object as someCar
carInTable.setColor(red);
List 的实现类似:
final List<Car> cars = new ArrayList<Car>();
final Car someCar = new Car();
cars.add(someCar);
final Car carInTable = cars.get(1). // refers to same object as someCar
carInTable.setColor(red);
无泛型,只需自己进行转换:
final Map cars = new HashMap();
final Car someCar = new Car();
cars.put(1, someCar);
final Car carInTable = (Car) cars.get(1). // refers to same object as someCar
carInTable.setColor(red);
final List cars = new ArrayList();
final Car someCar = new Car();
cars.add(someCar);
final Car carInTable = (Car) cars.get(1). // refers to same object as someCar
carInTable.setColor(red);
当您不确定两个对象是否是同一个对象时,您可以随时将对象引用与== 进行比较:
System.println.out("someCar and carInTable are " + ((someCar == carInTable) ? "" : "not ") + "the same object");