首页 > 解决方案 > 如何使用接口创建多种类型的列表?

问题描述

我一直在努力在 Java 中掌握这个概念。我有一个需要打印的对象列表。字符串或位图。每个都有自己的打印方式。我当前的界面如下所示:

public interface IPrintJob {
    void print();
}

我有PrintJobText, 和PrintJobBitmap每个实现的类IPrintJob。我需要能够将它们都添加到同一个列表中。我可以这样做吗

ArrayList<IPrintJob> printjobs

这是正确的方法吗?这应该用泛型来完成吗?PrintJobText/PrintJobBitmap类会怎样?在网上搜索以了解处理此问题的最佳方法后,我有点迷失了。

标签: javagenerics

解决方案


一个例子可能是这样的..(虽然在这种情况下不完全确定位图是什么意思,所以只是将其设为布尔值)

public interface IPrintJob {
    void print();
}

public class PrintJobText implements IPrintJob {
   private String text;
   PrintJobText(String text) {
      this.text = text;
   }
   void print() {
       System.out.println(text);
   }
}

public class PrintJobBitmap implements IPrintJob {
   private boolean bit;
   PrintJobBitmap(boolean bit) {
      this.bit = bit;
   }
   void print() {
       System.out.println(bit ? "true" : "false");
   }
}

List<IPrintJob> printjobs = new ArrayList<>();
printJobs.add(new PrintJobText("test1");
printJobs.add(new PrintJobBitmap(true);

printJobs.forEach(IPrintJob::print);

当然 print 方法的实现可以是任何东西。系统输出只是一个例子。


推荐阅读