Oh *_*oon 5 java enums parameter-passing
在设计一些接口和类时,我正在考虑是否应该将枚举作为参数或其文字值传递.
在这个时刻,我完全是为了传递它的字面值,因为我读过一些我不记得关于通过枚举的耦合问题的地方.
有没有人对此有任何意见?:)
public enum Item{
CANDY("candy"), APPLE("apple");
}
Run Code Online (Sandbox Code Playgroud)
通过枚举
public buy(Item item){}
Run Code Online (Sandbox Code Playgroud)通过字面值
public buy(String itemValue){}
Run Code Online (Sandbox Code Playgroud)干杯.
我建议传递枚举值,因为它更强类型.在您的示例中,如果"candy"和"apple"是"buy"方法的唯一有效参数,则可以在编译时通过要求枚举而不是String作为方法参数来强制执行该操作.
绝对通过枚举.我的理由是:
buy.例如,如果你确实需要切换等.String.buy稍后的实现时,您将能够轻松地看到如何处理每个不同的枚举值.当您将其作为a传递时String,您可能不知道查看方法所有可能的输入值以及它们的处理方式.枚举是类,但具有一组预定义值。因此,您必须声明枚举并为其实例提供一个变量。
试试这个例子:
public class ItemDemo {
public enum Item {
CANDY("candy"), APPLE("apple");
}
CANDY c;
APPLE a;
public ItemDemo(String name, int age, double money, CANDY c, APPLE a) {
this.c= c;
this.a= a;
}
}
Run Code Online (Sandbox Code Playgroud)