Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Create object with Switch语句:无法对非静态方法进行静态引用?_Java_Enums_Static_Switch Statement_Non Static - Fatal编程技术网

Java Create object with Switch语句:无法对非静态方法进行静态引用?

Java Create object with Switch语句:无法对非静态方法进行静态引用?,java,enums,static,switch-statement,non-static,Java,Enums,Static,Switch Statement,Non Static,我试图使用switch语句基于类型创建一个对象。但是,我在main方法中的方法上遇到了此错误: 无法对非静态方法进行静态引用 从CoffeeFactory类型创建CoffeeFactory(CoffeeFactory.Type) 我做错了什么,是每个开关案例中的return new Coffee()语句吗?您需要使CreateCoffee方法静态,因为它直接从静态的main方法引用 您需要将CreateCoffee方法设置为静态,因为它直接从静态的main方法引用 static使您能够在不创建任

我试图使用switch语句基于
类型创建一个对象。但是,我在main方法中的方法上遇到了此错误:

无法对非静态方法进行静态引用 从CoffeeFactory类型创建CoffeeFactory(CoffeeFactory.Type)


我做错了什么,是每个开关案例中的
return new Coffee()
语句吗?

您需要使
CreateCoffee
方法静态,因为它直接从静态的
main
方法引用

您需要将
CreateCoffee
方法设置为静态,因为它直接从静态的
main
方法引用

static使您能够在不创建任何对象的情况下调用方法。因此,如果在本例中调用静态方法,则可以借助对象调用方法,也可以调用其他静态方法。

static使您能够在不创建任何对象的情况下调用方法。因此,如果在本例中调用静态方法,则可以调用main可以在对象的帮助下调用方法,也可以调用其他静态方法

public Coffee CreateCoffee(Type t ) {
    ingred = null;

    switch (t) {
     case LONG_BLACK:  
         ingred.add(Ingredient.ESPRESSO);
         return new Coffee(ingred, t);
     case FLAT_WHITE: 
         ingred.add(Ingredient.MILK);
         return new Coffee(ingred, t);
     case MOCHA: 
         ingred.add(Ingredient.CHOCOLATE);
         return new Coffee(ingred, t);

    default: return null;
    }


}

public static void main(String[] args) {
    CreateCoffee(Type.MOCHA);
}