我创建了一个类,并从中创建了57个对象,每个对象都有特定的ID号。
我可以创建一个使用ID作为参数返回对象的方法吗?
例如,假设我的班级名称为Things
,并从该类中创建了两个对象,分别为apple
和dog
,它们具有ID 1
和{{1 }}。
2
:
Things.java
class Things {
private String name;
private int ID;
public Things(String name, int ID) {
this.name = name;
this.ID = ID;
}
}
:
Main.java
在此示例中,我想在“事物”类中创建一个方法,如果我使用1作为参数,则返回对象apple,如果我使用2作为参数,则返回对象dog。
答案 0 :(得分:3)
除非将其存储在特殊的存储库中,否则无法通过特定属性来标识对象
您可以创建一个ThingRepository
,并可以通过ID获得特定的Things
。
public class ThingRepository {
private Map<Integer, Things> thingsRepository = new HashMap<>();
public void addThing(int id, Things things) {
thingsRepository.put(id, things);
}
public Things getThingById(int id) {
return thingsRepository.get(id); //Can return null if not present
}
}
addThing
方法无需显式采用id
。如果将吸气剂添加到Things
,则可以简化为
public void addThing(Things things) {
thingsRepository.put(things.getId(), things);
}
您需要解决的问题:
Things
对象添加到其中(调用者需要添加,或者必须有其他包装器/工厂必须这样做)。Things
,必须将其从上图中删除,否则可能导致内存泄漏。顺便说一句,Things
不应仅被命名为Thing
吗?
答案 1 :(得分:1)
此处有两个方面:
Map<Integer, Things>
)访问它们。每次创建一个新的Things
(应该叫Thing
,不是吗?!),您都去thatMap.put(newId, newThing)
。答案 2 :(得分:0)
例如,如果您使用Intellij,请按:alt + insert,然后选择getters / setter。
如果不只是编写自己的getter / setter;)。
就像这里:https://docs.oracle.com/javaee/6/tutorial/doc/gjbbp.html
但是基本上,如果要查找具有特定ID的Thing,则需要将它们存储在例如ArrayList中的某个位置,然后对其进行迭代,并且如果带有该ID的find元素只需将其返回即可。
1)创建新的ArrayList
2)遍历
3)如果找到想要的带有ID的事物,请将其退回。