我有一个抽象的Java类 FileManager
,其中包含三种文件操作方法。
openFile()
abstract readFile()
closeFile()
我想在
FileManager
这个类中指定所有这三种方法。然而,readFile()
方法将不得不读取不同类型的文件,比如csv
、xls
、doc
等。将来代码可能会读取PDF
文件。
对于所有这样的调用,返回类型都是不同的。
这意味着当我读取csv文件时,我将返回一个ArrayList,而xls文件则返回一个HashMap,依此类推。
为了实现这一点,并使代码符合工厂规范,我计划在项目中为每种文件类型创建一个单独的读取器类(CSVFileReader
,DOCFileReader
,XLSFileReader
等)。
是否有任何方法,可以强制开发人员在他们的_______(CSV/XLS/DOC)Filereader实现中包括readFile()
方法?
附:Java定义子类中重写的方法应该具有与返回类型相同或子类型的返回类型。我的问题是如何在FileManager
实现中指定readFile()
,并且对于每种不同类型的文件具有不同的返回类型?