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

标签 java

我有 2 个类:

public class A {
    private String label;

    public String getLabel() {
        return label;
    }
}

public class B {
    private String label;

    public String getLabel() {
        return label;
    }
}

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

public class C {
    private String label;

    public C(A object) {
        label = object.getLabel();
    }
}

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

最佳答案

你可以创建一个 interface并让 AB 实现它:

interface HasLabel {
    String getLabel();
}

然后

public class A implements HasLabel { ... }

public class B implements HasLabel { ... }

C 中:

public class C {
    private String label;

    public C(HasLabel object) {
        label = object.getLabel();
    }
}

当您执行 C(HasLabel object) 时,您保证可以在参数上调用 getLabel(),因此它允许您执行 object.getLabel ()

关于java - 避免为包含相同方法的不同类型定义多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29613655/

相关文章:

java - 对象属性共享同一个实例

java - 如何在 Android/Java 中同步 File 对象

java - SocketChannel.read() 无限期阻塞

java - 如何从 DAO 迭代多个数据

java - 由单例代码中的循环造成的堆栈溢出

java - Android ListView 对象不喜欢 new onItemClickListener() 作为 setOnitemClickListener() 的参数

java - 为什么 Sun 的 Arrays.sort 实现创建输入数组的克隆?

java - Android 上的时间解析问题

java - maven jetty 插件中找不到包

java - 如何在部署java ee应用程序时执行插入查询?