java - 在子类中重用条件语句。

标签 java abstract dry abstract-methods

我有以下类(class):

public abstract class Parent {

    public abstract boolean checkName(String str);
}


public class Child1 extends Parent {

    public static final String NAME = "CHILD1";

    @Override
    public boolean checkName(String str) {
        //check input validity:
        if (!NAME.equals(str)) {
            throw new IllegalArgumentException("some thing");
        }
        //...
    }
}


public class Child2 extends Parent {

    public static final String NAME = "CHILD2";

    @Override
    public boolean checkName(String str) {
        //check input validity:
        if (!NAME.equals(str)) {
            throw new IllegalArgumentException("some thing");
        }
        // ...
    }

}

你可以看到两个类中 checkName 方法的 check input validity 部分是相同的。我知道没有办法将这个联合部分移动到抽象 checkName parent 的方法,但是有没有办法避免这种重复呢?

最佳答案

你可以换个方式,让 checkName() 函数在 Parent 类中具体化,让它做输入有效性检查,然后调用一些抽象方法您的子类实现其余的处理。

关于java - 在子类中重用条件语句。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30851389/

相关文章:

python - 如何参数化通用 Python 模块?

php - 如何获取调用类的名称(在 PHP 中)

java - 实现一个接口(interface),该接口(interface)有一个返回接口(interface)的方法,但收到未实现的错误

r - 如何将函数应用于 R 中数据框中的特定列集以替换 NA

ruby-on-rails - 如何跨多个应用程序共享 rspec 示例?

java - 当 NULL LocalDate 作为输入给出时, native 命名查询失败并出现异常 "column is of type date but expression is of type bytea"

java - jsonObject 无法转换,因为 jsonArray 类型不匹配

sql - Mysql如何避免重蹈覆辙

java - 未知异常的 e.printStackTrace() 出了什么问题

java - Retrofit无法从firebase数据库获取数据