如何从Java中的另一个类调用方法

时间:2010-09-21 03:12:16

标签: java class methods hashmap

所以,我有这个课程:

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中的键值参数中使用它?还有一种方法可以在不创建新类的情况下向hashmap添加3个值(name info quan)吗?

3 个答案:

答案 0 :(得分:4)

我看到您使用参考Product方法获得a个参考作为addProd方法的参数。

只需使用a.getID()即可获得id。它应该看起来像:

  public void addProd(Product a) {

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

我不明白你问题的第二部分..我认为你的Product对象中已经有3个值,你把Product对象放到Map中,那你为什么还需要另一种方法呢?

答案 1 :(得分:0)

您的类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);
}

地图只能将单个值映射到单个键,因此您必须为要整理为一个值的值设置某种容器。这可以是对象(产品),也可以使用集合(例如List)。我强烈推荐前者。

答案 2 :(得分:0)

关于在地图中放置3个值的问题,我认为没有办法在不创建类的情况下将3个值放入一个键中。另一种方法是存储Map<String, List<String>>,假设您的3个值是String类型,或Map<String, Map<String, String>>