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

发布于 2024-09-24 05:56:07 字数 1202 浏览 3 评论 0 原文

所以,我有这个类:

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 个值(名称信息 quan)添加到哈希映射中?

So, I have this class:

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

In another class i have this:

 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(??));
   }  
}

If this data was user generated rather than me, I would use the getID() method right?
So in my class invoice, how do i use the method getID(), so that I can use it in the parameter for my key value in the HashMap? Also is there a way to add 3 values (name info quan) to the hashmap without making a new class?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

黄昏下泛黄的笔记 2024-10-01 05:56:07

我看到您获得了 Product 对象,其中引用“a”作为 addProd 方法的参数。

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

  public void addProd(Product a) {

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

我不明白你问题的第二部分。我认为你的 Product 对象中已经有 3 个值,并且你将 Product 对象放入了 Map 中,那么为什么你需要另一种方式呢?

I see that you get Product object with ref "a" as parameter to your addProd method.

And you can get id by just using a.getID(). It should look as:

  public void addProd(Product a) {

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

I didn't understand second part of your question.. I think you already have 3 values in your Product object and you put Product object to Map, So why do you require another way ?

澜川若宁 2024-10-01 05:56:07

您的类 Product 无法编译,因为您的构造函数中有名称 Item。构造函数名称必须与类名称匹配。因此将其更改为产品。这同样适用于发票与购物车。构造函数和类名称必须匹配。

根据您的评论,您希望向地图添加四个产品值。关键是产品本身的价值之一。试试这个:

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

...

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

映射只能将单个值映射到单个键,因此您必须有某种容器来存放您希望整理成一个值的值。这可以是一个对象(产品),也可以使用一个集合(例如列表)。我强烈推荐前者。

Your class Product does not compile, because you have the name Item in your constructor. The constructor name must match the class name. So change that to Product. The same applies to Invoice vs ShoppingCart. Constructor and Class names must match.

As per your comment, you'd like to add four product values to a Map. The key being one of the values of the product itself. Try this:

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

...

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

Maps can only map a single value to a single key, so you must have some sort of container for the values you wish to collate into one value. This can be an object (Product) or you could use a collection (e.g. List). I strongly recommend the former.

简单气质女生网名 2024-10-01 05:56:07

对于您关于在映射中放入 3 个值的问题,我认为没有一种方法可以让您在不创建类的情况下将 3 个值放入一个键中。另一种方法是存储 Map> 假设您的 3 个值是 String 类型,或者 Map>代码>.

For your question about putting 3 values in your map, I don't think there's a way for you to put 3 values into one key without creating a class. An alternative is to store a Map<String, List<String>> assuming your 3 values are type String, or, Map<String, Map<String, String>>.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文