Java 如何删除此代码示例的重复代码?
给定以下代码:Java 如何删除此代码示例的重复代码?,java,Java,给定以下代码: public interface DTMFKeys { public String getKeyStr(); public static enum Sign implements TahoeDTMFKeys { SIGN_1("*1"), SIGN_2("*2"), SING_3("*3"), SIGN_4("*4"), SIGN_5("*5"), SIGN_6( "*6"), SIGN_7("*7"), SI
public interface DTMFKeys {
public String getKeyStr();
public static enum Sign implements TahoeDTMFKeys {
SIGN_1("*1"), SIGN_2("*2"), SING_3("*3"), SIGN_4("*4"), SIGN_5("*5"), SIGN_6(
"*6"), SIGN_7("*7"), SIGN_8("*8"), SIGN_9("*9");
private String keyStr;
private Sign(String keyStr) {
this.keyStr = keyStr;
}
@Override
public String getKeyStr() {
return keyStr;
}
}
public static enum Pound implements TahoeDTMFKeys {
POUND_1("1#"), POUND_2("2#"), POUND_3("3#"), POUND_4("4#"), POUND_5(
"5#"), POUND_6("6#"), POUND_7("7#"), POUND_8("8#"), POUND_9(
"9#");
private String keyStr;
private Pound(String keyStr) {
this.keyStr = keyStr;
}
@Override
public String getKeyStr() {
return keyStr;
}
}
}
如何删除重复的代码:
private Sign(String keyStr){
this.keyStr=keyStr;
}
@Override
public String getKeyStr() {
return keyStr;
}
它没有太多的代码,所以我不会真的担心重构它。Java枚举无法扩展其他类。避免代码中的重复实际上是重复大量复杂的逻辑,而不是getter/setter字段 如果你真的担心“重复”,你可以完全取消枚举吗
public static String getKeyString(int n, char sign) {
if (n < 0 || n > 9) throw new IllegalArgumentException();
if (sign == '#') {
return ""+n+sign;
else if (sign == '*') {
return ""+sign+n;
else {
throw new IllegalAgumentException()
}
}
公共静态字符串getKeyString(int n,char-sign){
如果(n<0 | | n>9)抛出新的IllegalArgumentException();
如果(符号='#'){
返回“+n+符号;
else if(符号=='*'){
返回“+”符号+n;
否则{
抛出新的IllegagumentException()
}
}
另外,SING_3拼写不正确。删除它们既不可能,也不可取。因为枚举不能从抽象类继承,所以这是不可能的。
keyStr
是一个私有概念,用于对概念上彼此独立的类进行敲打和签名。你确实不能,但这并不是那么重要无论如何都要编码。你能把基类变成一个抽象类而不是一个接口吗?或者这是不允许的吗?@KarthikT:如果你使用的是枚举,就不允许了。@LouisWasserman啊,太糟糕了