将对象从一个私有方法传递到另一个私有方法

Dil*_*ton 5 java methods private object

我现在已经编程了一段时间,我对使用公共方法有疑问.我正在研究自动售货机程序,我有一个私有方法setUpMachine()来初始化游戏并设置对象.我有另一个私有方法startMachine()启动游戏并提示用户输入.然后它将输入传递给另一个私有方法checkInput(),该方法检查输入是否有效......但这是我遇到的问题,而不是一个"问题",但有一种奇怪的感觉,我没有正确地做某事.setUpMachine()对于我的第三种方法,我需要访问第一种方法中的对象checkInput().问题是我有很多物品(糖果,薯片,苏打水,饼干),并将它们全部传递到检查周边,这似乎是不对的.换句话说,这样做:

checkInput(FoodType candy, FoodType chips, FoodType soda, FoodType cookie)
Run Code Online (Sandbox Code Playgroud)

似乎不对.这是否意味着,如果我使用私有方法,每次我想使用它时都必须传递对象?我读到制作公共方法是不好的做法.

对此的解释将是很好的,而不是解释告诉我我的编码是低效的,但更多的解释描述何时以及如何使用私有方法,或者是否有另一种方法去做这件事.

dou*_*arp 3

如果您不想传递对象,可以将它们配置为实例变量:

public class VendingMachine {
    private FoodType candy;
    private FoodType chips;
    private FoodType sodas;
    private FoodType cookies;

    private static String errorMessage = "A really bad error occurred.";

    public VendingMachine(){
        this.setupMachine();
    }

    private void setUpMachine(){
        this.candy = new FoodType();
        this.chips = new FoodType();
        this.sodas = new FoodType();
        this.cookies = new FoodType();
    }

    private boolean checkInput(){
        if (this.candy==null || this.chips==null || this.sodas==null || this.cookies==null)
            return false;
        else
            return true;
    }

    public void doSomething() throws Exception() {
        if (!this.checkInput()) throw new Exception(VendingMachine.errorMessage);
        // do things
    }
}
Run Code Online (Sandbox Code Playgroud)

这个类可以被称为

VendingMachine vendingMachine = new VendingMachine();
try {
    //vendingMachine.checkInput() is not available because it is private
    vendingMachine.doSomething(); // public method is available
} catch (Exception e){
    // validation failed and threw an Exception
}
Run Code Online (Sandbox Code Playgroud)