我有一个抽象的Java类FileManager
,它包含三种文件操作方法。抽象方法覆盖,在java中实现不同的返回类型
openFile()
abstract readFile()
closeFile()
我想指定所有的类
FileManager
内的三种方法。但是,方法readFile()
必须读取不同类型的文件。即csv
,xls
,doc
。将来代码甚至可能需要读取PDF
文件。
所有这些调用的返回类型将有所不同。
这意味着当我读取csv文件时,我将返回一个ArrayList,另一方面xls文件将返回一个HashMap,依此类推。为了实现这一点,并使代码工厂兼容,我计划在每个文件类型的项目中制作一个单独的阅读器类。 (CSVFileReader
,DOCFileReader
,XLSFileReader
等)
有什么办法,在那里我可以强制开发者可以在他的______(CSV/XLS/DOC)的FileReader实施readFile()
方法? PS:Java定义了子类中的重写方法应该具有相同或返回类型的子类型。我的问题是如何在FileManager
实现中指定readFile()
,并且对于每种不同类型的文件也有不同的返回类型?
请阅读我在接受的答案上留下的评论。我不相信这是一个好的解决方案,我提出的解决方案在OOP的角度更有意义 – Dici