0

所以,我试图将一个字符串与另一个类的实例变量进行比较,但我想不出一种方法来为所述类的所有对象执行此操作。我确定如果发生这种情况的方法正在运行,我有 4 个包含实例变量的类的对象。目标是比较用户给我的字符串,如果它等于先前定义的对象之一,则更改该对象中的另一个实例变量。在 sudo-code 中,它会是这样的:

if (colourInput == colourofAnyObjectOfTheClass)
   sizeOfThatObject = sizeInput;
else
   new Object(colourInput, sizeInput);

我之前已经定义了 colourInput 和 sizeInput 是什么。我怎样才能在Java中实现这个?

4

2 回答 2

1

比较 Strings时,您应该使用String#equals()方法,而不是==运算符。

if (colourofAnyObjectOfTheClass.equals(colourInput)) {
    sizeOfThatObject = sizeInput;
} else {
    new SomeObject(colourInput, sizeInput);
}
于 2013-11-04T13:12:47.563 回答
0

您应该考虑创建某种类实例的存储库,该类将管理对象的创建,以便跟踪它们。

class MyEntityRepository {
    private List<MyEntity> entities;

    public MyEntity createOrUpdate(String color, Integer size) {
         MyEntity entity = findByColor(color);
         if (entity != null) {
             entity.setSize(size); 
         } else {
             entity = new MyEntity(color, size);
             entities.add(entity);
         }
         return entity;
    } 

    private MyEntity findByColor(String color) { ... }
}  

如果您有很多实体,您可以创建某种索引,例如存储Map<String, MyEntity>将键映射到实体并使用它来加快搜索速度。

于 2013-11-04T13:19:42.267 回答