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

时间:2017-10-18 12:35:43

标签: java getter

我正在编写代码来练习getter和setter,我遇到了以下情况:

我创建了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。有人能帮助我吗?

2 个答案:

答案 0 :(得分:0)

使用实例字段创建一个类Product,然后使用List,例如 像:

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

答案 1 :(得分:-1)

首先,你没有在主类中声明任何“产品”,所以当你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