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

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


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


例如,假设我的类的名称是Things,我从中创建了两个名为appleand 的对象dog,它们具有 ID1和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:


class Main {


    public static void main(String[] args) {

        Things apple = new Things("apple", 1);

        Things dog = new Things("dog", 2);

    }

}

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


一只名叫tom的猫
浏览 195回答 3
3回答

烙印99

您无法通过特定属性识别对象,除非您将其存储在特殊存储库中您可以创建一个ThingRepository并且可以Things通过 id获取特定信息。public class ThingRepository {&nbsp; &nbsp;private Map<Integer, Things> thingsRepository = new HashMap<>();&nbsp; &nbsp;public void addThing(int id, Things things) {&nbsp; &nbsp; &nbsp; thingsRepository.put(id, things);&nbsp; &nbsp;}&nbsp;&nbsp; &nbsp;public Things getThingById(int id) {&nbsp; &nbsp; &nbsp; &nbsp;return thingsRepository.get(id); //Can return null if not present&nbsp; &nbsp;}}该addThing方法不需要显式采用id. 如果你添加一个 getter 到Things,那么它可以简化为public void addThing(Things things) {&nbsp; &nbsp; thingsRepository.put(things.getId(), things);}&nbsp;您需要解决的几个问题:每个创建的Things对象都必须以某种方式添加到这里(调用者需要添加或者必须有其他一些包装器/工厂必须这样做)。一旦Things不需要 a ,就必须将其从上面的映射中删除,否则会导致内存泄漏。顺便说一句,不应该Things只命名为Thing?

子衿沉夜

这里有两个方面:您需要某种数据结构来记住创建的对象,并允许您通过 id 访问它们,例如一个简单的Map<Integer, Things>.&nbsp;每次你创建一个新的Things(最好被称为Thing,不是吗?!),你去thatMap.put(newId, newThing)。如果您希望该数据“幸存”,则必须以某种方式将其持久化(例如将数据写入文件、数据库等)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java