Как вызвать метод из другого класса в Java - PullRequest
1 голос
/ 21 сентября 2010

Итак, у меня есть этот класс:

public class Product  {
 private String name, id, info ;
 private int quantity;

 public Product(String newName, String newID, String newInfo, Integer newQuantity){
  setName(newName);
  setID(newID);
  setPrice(newInfo);
  setQuantity(newQuantity);}

 public void setName(String name) {
  this.name = name;  }

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

 public void setPrice(String info) {
  this.info = info;  }

 public void setQuantity(Integer quantity) {
  this.quantity = quantity;   }

 public String getID( ) { 
    return id;  }

 public String getName( ) { 
  return name;   }

 public String getInfo( ) { 
  return info; }

 public int getQuantity( ) { 
  return quantity;  }

В другом классе у меня есть это:

 public class Invoice implements Group<Product> {
   private HashMap<String, Product> prod = new HashMap<String, Product>( );

  public Invoice(){ } 
   public void addProd(Product a) {

      prod.put(??getID()??,new Product(??));
   }  
}

Если бы эти данные были сгенерированы пользователем, а не мной, я бы использовал метод getID(), верно? Так как в моем счете-фактуре класса, как я могу использовать метод getID(), чтобы я мог использовать его в параметре для моего значения ключа в HashMap? Также есть ли способ добавить 3 значения (name info quan) в hashmap без создания нового класса?

Ответы [ 3 ]

4 голосов
/ 21 сентября 2010

Я вижу, что вы получаете Product объект с ref "a" в качестве параметра для вашего addProd метода.

И вы можете получить идентификатор, просто используя a.getID (). Это должно выглядеть так:

  public void addProd(Product a) {

      prod.put(a.getID(),a);
  }  

Я не понял вторую часть вашего вопроса. Я думаю, что у вас уже есть 3 значения в вашем объекте Product, и вы поместили объект Product в Map. Так зачем вам нужен другой способ?

0 голосов
/ 21 сентября 2010

Что касается вопроса о размещении 3 значений на карте, я не думаю, что у вас есть способ поместить 3 значения в один ключ без создания класса.Альтернативой является сохранение Map<String, List<String>> при условии, что ваши 3 значения имеют тип String или Map<String, Map<String, String>>.

0 голосов
/ 21 сентября 2010

Ваш класс Product не компилируется, потому что у вас есть имя Item в вашем конструкторе.Имя конструктора должно соответствовать имени класса.Так что измени это на Product.То же самое относится к Invoice vs ShoppingCart.Имена конструкторов и классов должны совпадать.

Согласно вашему комментарию, вы хотите добавить четыре значения продукта на карту.Ключ является одной из ценностей самого продукта.Попробуйте это:

Product p = new Product(name, id, info, quantity);
cart.addProd(p);

...

public void addProd(Product p) {
    prod.put(p.getId(), p);
}

Карты могут отображать только одно значение на один ключ, поэтому у вас должен быть какой-то контейнер для значений, которые вы хотите объединить в одно значение.Это может быть объект (продукт) или вы можете использовать коллекцию (например, список).Я настоятельно рекомендую первое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...