Java Create object with Switch语句:无法对非静态方法进行静态引用?
我试图使用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使您能够在不创建任
类型创建一个对象。但是,我在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);
}