gpt4 book ai didi

java - java中如何使用对象的类变量来标识对象?

转载 作者:行者123 更新时间:2023-12-01 17:50:02 25 4
gpt4 key购买 nike

我创建了一个类,并用它制作了 57 个对象,每个对象都有特定的 ID 号。

我可以创建一个使用 ID 作为参数返回对象的方法吗?

例如,假设我的类的名称是 Things,我从中创建了两个对象,分别称为 appledog,它们有 ID 12

Things.java:

class Things {

private String name;
private int ID;

public Things(String name, int ID) {
this.name = name;
this.ID = ID;
}
}

Main.java:

class Main {

public static void main(String[] args) {
Things apple = new Things("apple", 1);
Things dog = new Things("dog", 2);
}
}

在这个例子中,我想在类“Things”中创建一个方法,如果我使用 1 作为参数,它返回对象 apple ,如果我使用 2 ,它返回对象狗。

最佳答案

除非将对象存储在特殊的存储库中,否则无法通过特定属性来识别对象

您可以创建一个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 添加一个 getter,那么它可以简化为

public void addThing(Things things) {
thingsRepository.put(things.getId(), things);
}

您需要解决的几个问题:

  1. 每个创建的 Things 对象都必须以某种方式添加到此对象(调用者需要添加,或者必须有其他包装器/工厂必须执行此操作)。
  2. 一旦不再需要某个Things,就必须将其从上面的映射中删除,否则可能会导致内存泄漏。
<小时/>

顺便说一句,Things 不应该被命名为 Thing 吗?

关于java - java中如何使用对象的类变量来标识对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51403904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com