jul*_*ian 6 java oop polymorphism switch-statement
看看这段代码 -
switch(kind) {
case "green" :
GreenKind.doSomething(); // Static function
break;
case "white" :
WhiteKind.doSomething(); // Static function
break;
case "blue" :
BlueKind.doSomething(); // Static function
break;
case "yellow" :
YellowKind.doSomething(); // Static function
break;
}
Run Code Online (Sandbox Code Playgroud)
有一种方法可以避免switch语句吗?因为它闻起来很糟糕.
也许像这样的人? -
kinds.get(kind).doSomething();
Run Code Online (Sandbox Code Playgroud)
我的解决方案的问题是函数是静态的,我无法实现具有静态函数的接口.如果你不明白为什么我写接口,因为我想在我的解决方案中使用多态.
Roh*_*ain 15
我会enum这样:
enum Kind {
GREEN {
@Override
public void doSomething() {
GreenKind.doSomething();
}
},
WHITE {
@Override
public void doSomething() {
WhiteKind.doSomething();
}
};
public abstract void doSomething();
}
Run Code Online (Sandbox Code Playgroud)
并传递一个枚举常量,例如这个方法:
public static void invoke(Kind kind) {
kind.doSomething();
}
Run Code Online (Sandbox Code Playgroud)
并称之为:
invoke(Kind.GREEN);
Run Code Online (Sandbox Code Playgroud)
这种方式看起来更干净,而且更安全,因为您只能拥有一组固定的输入.