当前位置: 首页 > 面试题库 >

创建的对象的ID生成器

路伟
2023-03-14
问题内容

我需要一个创建对象的类,为每个创建的对象分配一个ID。通常,此ID是该类的int属性。我希望每次创建一个对象时都增加该值(ID),然后将其分配给从1开始的那个对象。这让我感到震惊,我需要一个静态int属性。

如何初始化此静态属性?

我是否应该创建一个单独的方法来进行ID的增量(作为ID生成器),该增量在构造函数内部调用?

通常,最有效和精心设计的方法是什么?


问题答案:

就像您提到static int的ID一样,在创建新对象时将其递增。

class MyObject {

    private static int counter = 0;

    public final int objectId;

    MyObject() {
        this.objectId = counter++;
    }
}

请注意,counter++如果MyObject由多个线程创建,则需要保护(例如AtomicInteger,根据其他答案的建议使用)。



 类似资料:
  • 我目前正在用spring boot和mysql创建一个微服务来管理拍卖信息。我创建了一个-对象和一个-对象。除了bid和Offer的一些属性之外,这里最重要的是Offer和bid之间的-关系,因为显然每个Offer都可以有多个相关的bid。 我使用默认的-接口进行数据库交互,并通过输入数据和测试是否能够得到正确的输出来测试数据库结构。这一切都运行良好,但当我试图测试输入数据的服务endpoint时

  • 问题内容: 我有一个以前被保留的实体,并且与另一个实体有关系。为了添加新实体,我只需将新实体添加到托管对象中,并用于保留更改。有没有一种方法可以获取新创建的对象的ID或获取我用于合并以更新其ID的原始(非托管)对象? 在伪代码中,我希望发生以下情况: 将为合并实体返回新副本 旧副本将针对新实体进行更新 示例:父级A,id = 13子级B,id = 0 从本质上讲,我想在父级上发布a ,但在子级上级

  • 我正在创建一个需要一组玩家的应用程序。我使用团队ID作为每个球员的团队主键和外键。在一个片段中,我创建了一个新团队。创建团队并将其添加到我的房间数据库时,它最初的ID为0或未设置,即使我已将“自动生成”设置为true。然后,我导航到团队花名册视图,该视图能够向团队添加新球员。当我创建新玩家并在团队视图模型中使用新团队ID时,团队ID仍然为0或未设置,因此应用程序崩溃,外键约束失败。崩溃后,如果我重

  • 问题内容: 当我将Mongodb与Java结合使用时,我想在客户端生成对象ID。但是,在插入记录之前,我必须先查询mongodb以确保由ObjectId()方法生成的ID是唯一的。有什么方法可以生成唯一的对象ID,而无需两次访问mongodb? 问题答案: 对象ID与您在RDMS中使用的顺序ID不同。如果它们是根据对象ID规范正确生成的,则无需担心它们是唯一的。 您要做的就是确保始终创建一个新的对

  • 主要内容:显式创建对象,隐含创建对象对象是对类的实例化。对象具有状态和行为,变量用来表明对象的状态,方法表明对象所具有的行为。 Java 对象的生命周期包括创建、使用和清除,本文详细介绍对象的创建,在 Java 语言中创建对象分显式创建与隐含创建两种情况。 显式创建对象 对象的显式创建方式有 4 种。 1. 使用 new 关键字创建对象 这是常用的创建对象的方法,语法格式如下: 2. 调用 java.lang.Class 或者 ja

  • 7.2.2 对象的创建 一旦定义了类,就可以创建类的实例,也就是该类的一个对象②。类是抽象的,而对象 则是具体的,就好比“人”是抽象概念,而“张三”是个具体的人。一个类可以创建任意多 个实例(对象),所有实例都具有相同的行为(这是由类中定义的方法决定的),但各自的数 据值可以不同。创建类的实例采用如下形式: <变量> = <类名>(<参数>) 这里将类名当成一个函数来用,称为类的构造器(cons