如何定义一次方法并将其用作其他方法的"building plan"?



我是Java新手,有以下问题:
有没有一种更简单的方法来为每个变量制作方法?

问题背后的含义是:
我是否必须定义一个与其他方法完全相同的方法,只是它们使用不同的变量名和类型?

我认为有同样问题的最常见方法是获取和设置访问器:
它们共享相同的结构,唯一的区别是变量类型和名称。

在我下面的例子中,你需要知道:

  1. 变量varA-varD只是表示多个类型和名称不同的变量的存在
  2. 变量"inheritor"是特殊的。我不执行继承,但我do必须验证某个地方,可能是继承人的继承人中的同一变量
    • 具有值("!=null";在列表、哈希映射、枚举等情况下)
    • 具有除-2之外的值(因为在我的系统中,0表示零,-1表示"无限",所以我认为使用-2表示变量尚未设置是个好主意;在整数、浮点、双精度等情况下)
  3. 我有验证方法。。。
    • 。。。检查变量是否已设置
      因此,代码被定位
    • 。。。在setter之外,因为我必须检查变量,即使它们还没有设置
public class ExampleClass {
    private int varA;
    private String varB;
    private ExampleEnum varC;
    private List<OtherClass> varD;
    //there are more variables here...
    private ExampleClass inheritor; 
    public int getVarA() {
        return varA;
    }
    public void setVarA(int varA) {
        this.varA = varA;
    }
    public boolean validateVarA() {
        //-2 is "not set" for Integers
        if (varA == -2 && inheritor != null) { 
            return inheritor.getVarA() != -2;
        } else {
            return varA != -2;
        }
    }
    //Do I have to define three methods for each variable?
    //What if I had like 20 variables?!?
    //I would need 60 methods altough every third one
    //shares the same structure.
}

我需要某种"建筑计划"作为一种方法:

public T getVar() {
    return var;
}
public void setVar(T var) {
    this.var = var;
}
public boolean verifyVar() {
    //How would I get the invalid value for each type?
    T invalidValue = ?;
    if (var == invalidValue && inheritor != null) { 
        return inheritor.getVar() != invalidValue;
    } else {
        return var != invalidValue;
    }
}

在上面的例子中:

  • "Var"或"Var"将是变量名
    以及
  • "T"将是var的类型
  • 我不知道如何获得无效值

抱歉,我想太复杂了,我的问题有一个简单的答案。此外,对于可能出现的语法错误,我深表歉意。

对于通用的getter和setter,总是有Map<String, Object>,但我很确定这不是你想要的,所以你应该坚持JavaBean约定(正如评论中提到的,任何IDE都会为你生成这些约定,根据OOP建议来拥有它们是完全有意义的)。

任何实现泛型访问器的尝试迟早都会变成一些带有反射色调的java.util.Map。如果这是你想要的,也许你应该重新考虑你的模型,并将你的类型安全bean切换到一些自由形式的类型,如map。

对于验证,有javax.validation包(JSR-303)。

相关内容

最新更新