如何让getter根据参数返回一些东西?

问题描述:

我在写代码练getter和setter方法,我已经碰到以下情况:如何让getter根据参数返回一些东西?

我创建5个产品,一类是私有声明它们。我希望我的getter根据方法接收的参数返回产品的名称。像,public String getProduct(String product) {}。到目前为止,我已经写了如下:

class Products { 
    private String p1 = "Mocha", p2 = "Latte", p3 = "Cappuccino", p4 = "Frappuccino", p5 = "Cafe au Lait"; 
    private int priceP1 = 8, priceP2 = 5, priceP3 = 10, priceP4 = 13, priceP5 = 3; 

    public String getProduct(String product) { 
     return this.product; 

    } 

} 

我的想法是使用像public String getProducts(p1);一个getter,它会返回Mocha。但是,当我编译代码时,它说cannot find symbol - symbol: variable product。有人能帮我吗?

+6

哦,亲爱的。这根本不是它的工作原理。你应该有一个包含一个包含独立的变量,因为你误解了变量是如何不起作用一个弗兰肯的getter一切的名称和价格为单个项目,而不是一个'Products'类'Product'类用于Java。阅读[一些教程](https://docs.oracle.com/javase/tutorial/)。 – Kayaman

+0

@Kayaman说了些什么,还有关于无法找到符号的问题; 'product'没有在任何地方声明。 –

+0

谢谢你们。会做。 –

首先,你还没有宣布在主类中的任何“产品”,所以当你return this.product;你会得到你说的错误。 作为Kayaman说,你应该了解的Java变量一些教程。 但是,你可以尝试这是一个简单的简单教程:

public static class Products { 
     HashMap<String, String> productList = new HashMap<String, String>(); 

     public Products() { 
      productList.put("p1", "Mocha"); 
      productList.put("p2","Latte"); 
     } 

     public String getProductName(String productID){ 
      return productList.get(productID); 
     } 
    } 

Ussage:

Products p=new Products(); 
System.out.println(p.getProductName("p2")); 

控制台:

Latte 

与实例字段创建一个类Product然后用列表例如 像:

public class Product { 
    private Type type; 
    private int price; 

    public Product(Type type, int price) { 
     this.type = type; 
     this.price = price; 
    } 

    public Type getType() { 
     return type; 
    } 

    public int getPrice() { 
     return price; 
    } 

    public enum Type { 
     Mocca, Latte, Cappuccino; 
    } 
} 

那么你可以使用它像:

List<Product> products = new Arraylist(); 
products.add(new Product(Type.Latte, 5)); 

顺便说一句,你就可以开始在这里得到类和对象的基础知识:https://docs.oracle.com/javase/tutorial/java/javaOO/index.html