- Поместите этот метод в абстрактный класс Util. Используйте дженерики.
- Передать абстрактным методам логику для выполнения в строках 9 и 16-19.
- Определите эти абстрактные методы при использовании этого класса
Например:
public abstract class ReaderUtil<K, V> {
protected abstract Map<K, V> newMap();
protected abstract void doThings(String data, Map<K, V> resultMap);
public Map<K, V> readAllLogsIntoMap(File file){
if (!file.exists()){
return newMap();
}
BufferedReader reader = null;
FileReader fileReader = null;
String data = null;
Map <K, V> resultMap = newMap();
try {
fileReader = new FileReader(file);
reader = new BufferedReader(fileReader);
while ((data = reader.readLine()) != null){
doThings(data, resultMap);
}
} catch(Exception e){
}
finally{
try{
if (reader != null) reader.close();
if (fileReader != null) fileReader.close();
} catch(IOException ioe){
}
}
return resultMap;
}
}
И возможное использование:
ReaderUtil<String, PackageLog> reader = new ReaderUtil<String, PackageLog>(){
protected Map<String, PackageLog> newMap() {
return new HashMap<String, PackageLog>();
}
protected void doThings(String data, Map<String, PackageLog> resultmap){
PackageLog pl = new PackageLog(data);
if(!pl.getPdfName().equals("")){
resultMap.put(pl.getPdfName(), pl);
}
}
};
Map<String, PackageLog> myMap = reader.readAllLogsIntoMap();
Учтите, что вам нужен только метод newMap()
, если вы хотите предоставить различные реализации карт. Вы могли бы сделать new HashMap<K, V>()
внутри обобщенного класса.
Возможно, вы также захотите определить подключаемые методы (переопределяемые, возможно, пустые методы) для обработки исключений.