【问题标题】:Auto update ID in JavaJava中的自动更新ID
【发布时间】:2013-03-17 10:23:26
【问题描述】:

这是我的学校作业。我需要一个库存系统,当用户输入新产品时,它会自动更新产品 ID。我创建了一个名为 Product 的对象数组,它具有 4 个属性(名称、ID、价格、数量)。 ID 不需要用户输入。

这部分在 input() 方法中,它与 Object 位于不同的类中。我没有将 ID 传递给对象类,就像我对其他三个属性所做的那样。

            x[i] = new Product(name,price,stock);
            id = x[i].setID();   

对象类的一部分:

/**
 * Constructor
 */
public Product(){
    id = 0; name = ""; price = 0.00; quantity = 0;
}

public Product( String n, double p, int q){
    setName(n); setPrice(p); setQuantity(q);
}

public void setID(){
    this.id = id++;
}

谢谢。

【问题讨论】:

  • 您是否正在寻找一种自动生成 ID 的方法?
  • 这个想法是每次添加新产品时增加 id,因此您只需创建一个每次输入新产品时都会增加的 COUNT 并将 id 设置为 Product Class 中的 id跨度>

标签: java auto-generate


【解决方案1】:

你没有工作,因为id 是一个实例变量。这意味着您创建的每个产品的 ID 都是 0。在您创建的每个产品上调用 setID() 会将每个产品的 ID 设置为 1。

您需要一个 static 计数器,它属于该类,而不是它的每个实例:

public class Product {
    private static int nextId = 0;

    ...

    public Product(String name, double price, int quantity) {
        this.id = Product.nextId;
        Product.nextId++;
        this.name = name; 
        this.price = price; 
        this.quantity = quantity;
    }
}

请注意,这在多线程环境中效果不佳,并且 double 对价格来说是一个不好的选择,但您稍后会了解到。

有关实例和静态变量的更多信息,请参阅the Java tutorial

【讨论】:

    【解决方案2】:

    您是否正在寻找一种为每个 Product 对象生成唯一 ID 的方法?如果是这样,那么您现在编写它的方式就行不通了,因为每个 Product 都有自己的 id,它完全独立于所有其他 Product 对象。有几种方法可以解决这个问题:-

    1. 了解静态变量在 Java 中的含义
    2. 在代码中维护一个变量,每次创建 Product 对象时该变量都会递增。将此变量传递给 Product 的构造函数。

    【讨论】:

      猜你喜欢
      • 2019-10-29
      • 2013-02-25
      • 2022-06-12
      • 1970-01-01
      • 2015-01-07
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多