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

自动ID生成

吕骞尧
2023-03-14
问题内容

有人知道如何id从1开始生成,以便下一个对象具有2,依此类推吗?

我尝试了以下方法,但不起作用:

class students{

    private int id;
    private String name;

    public student(String name){
        this.id=id++;
        this.name
    }
}

问题答案:

您需要一个 静态的 类成员来跟踪上次使用的索引。确保还实现一个复制构造函数:

class students
{
    private static int next_id = 0;   // <-- static, class-wide counter

    private int id;                   // <-- per-object ID

    private String name;

    public students(String name)
    {
        this.id = ++students.next_id;
        this.name = name;

        // ...
    }

    public students(students rhs)
    {
        this.id = ++students.next_id;
        this.name = rhs.name;

        // ...
    }

    public static void reset_counter(int n)  // use with care!
    {
        students.next_id = n;
    }

    // ...
}

更新: 正如@JordanWhite建议的那样,您可能希望使static计数器成为 atomic
,这意味着可以安全地同时使用(即一次在多个线程中使用)。为此,将类型更改为:

private static AtomicInteger next_id = new AtomicInteger(0);

增量读取和复位操作变为:

this.id = students.next_id.incrementAndGet();  // like "++next_id"

students.next_id.set(n);                       // like "next_id = n"


 类似资料:
  • 问题内容: 我在Employee类中有以下定义 现在,我想使用现有员工ID导入现有员工。即使在保存之前设置了员工ID,也会忽略分配的ID,并存储自动递增的ID。我们如何覆盖呢? 问题答案: 我编写了自己的生成器来解决此问题。 并像这样使用它:(替换包名)

  • 问题内容: 我想将用户持久保存到数据库中,并使用IDENTITY生成类型创建的User的ID(PK)的当前方案。例如 但我想在以下情况下进行操作:1)用户明确设置。2)如果未设置用户,则将自动分配它,并且它必须是唯一的。 请建议我一些可用的选项,以便我解决。谢谢。 问题答案: 您可以为此目的定义您的自定义ID生成器,如本SOAnswer中指出的那样 它的代码如下所示: 和

  • 问题内容: 有没有一种方法可以在SWT小部件上自动生成ID,以便UI测试可以引用它们?我知道我可以使用seData手动设置ID,但是我想以某种通用的方式为现有应用程序实现此功能。 问题答案: 您可以使用和为应用程序中所有外壳递归分配ID 。 设置ID 您可以使用方法访问应用程序中所有活动的(未处置的)Shell 。您可以遍历每个子项的所有子项,并使用方法为每个子项分配一个ID 。 如果是,则它可能

  • 在尝试创建具有自动生成ID的表时,我遇到了一个异常: commandAcceptanceException:“执行DDL时出错”create table seat(id bigint not null,description varchar(255),num integer not null,PROCY decimal(19,2),row char(255)not null,primary key

  • 问题内容: 我正在使用JPA(EclipseLink)和Spring。假设我有一个带有自动生成的ID的简单实体: 在我的DAO类中,我有一个调用此实体的insert方法。我希望该方法为新实体返回生成的ID,但是当我对其进行测试时,它将返回。 我还有一个包装DAO的服务类,如果有区别的话: 问题答案: 该ID仅保证在刷新时生成。持久实体只会使它“附加”到持久性上下文。因此,要么显式刷新实体管理器:

  • 问题内容: 嗨,我编写了这样的代码 但是我从DAO手动设置了它,例如“ e.setUserID(01);”。否则将不插入行是否有任何过程来获取ID值并检索自动生成的值。我想我会得到一些帮助 问题答案: 采用