避免对包含相同方法的不同类型的类的多个定义

use*_*789 1 java

我有2个课程:

public class A {
    private String label;

    public String getLabel() {
        return label;
    }
}

public class B {
    private String label;

    public String getLabel() {
        return label;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我有另一个类,我想访问这些类的标签值:

public class C {
    private String label;

    public C(A object) {
        label = object.getLabel();
    }
}
Run Code Online (Sandbox Code Playgroud)

例如,上面的定义仅适用于A.我希望能够将A或B传递给C的构造函数.我能想到的最接近的事情是使C成为泛型类,但后来我失去了对getLabel()的访问权限.我怎么能继续这个呢?我觉得这是一个基本的设计模式,但由于我是Java的新手,我不知道从哪里开始.任何帮助是极大的赞赏.

And*_*ira 5

您可以创建一个接口并同时创建它AB实现它:

interface HasLabel {
    String getLabel();
}
Run Code Online (Sandbox Code Playgroud)

然后

public class A implements HasLabel { ... }

public class B implements HasLabel { ... }
Run Code Online (Sandbox Code Playgroud)

并在C:

public class C {
    private String label;

    public C(HasLabel object) {
        label = object.getLabel();
    }
}
Run Code Online (Sandbox Code Playgroud)

当你这样做时,C(HasLabel object)你保证getLabel()可以在参数上调用,所以它允许你这样做object.getLabel().