java - 如何使用接口创建多种类型的列表?
问题描述
我一直在努力在 Java 中掌握这个概念。我有一个需要打印的对象列表。字符串或位图。每个都有自己的打印方式。我当前的界面如下所示:
public interface IPrintJob {
void print();
}
我有PrintJobText
, 和PrintJobBitmap
每个实现的类IPrintJob
。我需要能够将它们都添加到同一个列表中。我可以这样做吗
ArrayList<IPrintJob> printjobs
这是正确的方法吗?这应该用泛型来完成吗?PrintJobText
/PrintJobBitmap
类会怎样?在网上搜索以了解处理此问题的最佳方法后,我有点迷失了。
解决方案
一个例子可能是这样的..(虽然在这种情况下不完全确定位图是什么意思,所以只是将其设为布尔值)
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 方法的实现可以是任何东西。系统输出只是一个例子。
推荐阅读
- html - 如何使用 ExecWbin VBA 仅打印网站的第一页?
- c# - Xamarin.Forms UWP 应用程序在运行时使用 .net 本机工具链失败,但以其他方式工作
- javascript - 如何在 Jquery EasyUI 中自定义链接按钮大小,而不是使用内置的小尺寸或大尺寸?
- netlogo - 使用网络扩展,如何识别输出中的网络节点?
- java - 无法弄清楚为什么 Intent 没有被传递回以前的活动
- sql - 选择所有孩子都具有状态 x 的父母
- javascript - 如何将节点连接到组而不是子节点?
- c# - oledb excel 一些日期列返回 null
- javascript - 在 JavaScript 中从头开始创建空 URL 对象
- c# - 从单个控制器 Action ASP.NET MVC 调用多个控制器 Action