2013-03-17 2 views
-1

Это мое школьное задание. Мне нужна система инвентаризации, которая автоматически обновляет идентификатор продукта, когда пользователи вводят ключ в новый продукт. Я создал массив объектов Product с 4 атрибутами (имя, идентификатор, цена, количество). Идентификатор не должен вводиться пользователем.Auto update ID в Java

Эта часть находится в методе input(), который находится в другом классе от Object.I не передал идентификатор классу объекта, как я сделал, с тремя другими атрибутами.

  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++; 
} 

Спасибо.

+0

Вы ищете способ автоматического генерации идентификаторов? – sbrattla

+0

Идея увеличивает идентификатор при каждом добавлении нового продукта, поэтому вы можете просто создать COUNT, который будет увеличен каждый раз, когда вы вводите новый продукт и устанавливаете id в id в классе продукта – Azad

ответ

0

Вы ищете способ создания уникального идентификатора для каждого объекта продукта? Если это так, то, как вы его закодировали, теперь не работает, потому что каждый Продукт имеет свой собственный идентификатор, который полностью не зависит от всех других объектов Product. Есть несколько способов, которыми вы могли бы подойти к этому: -

  1. Посмотрите на то, что статические переменные означают в Java
  2. поддерживать переменную в коде, который получает приращение каждый раз, когда вы создаете объект продукта. Передайте эту переменную в конструктор Product.
1

Что у вас не получится, потому что id - это переменная экземпляра. Это означает, что каждый создаваемый вами продукт будет иметь идентификатор 0. И при вызове setID() на каждый создаваемый вами продукт будет установлен идентификатор продукта avery до 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; 
    } 
} 

Обратите внимание, что это не будет хорошо работать в многопоточной среде, и что двойной является плохим выбором для цен, но вы узнаете позже.

См. the Java tutorial для получения дополнительной информации о экземпляре и статических переменных.