这是您的层次结构的示例
class CVSParser<T> {
private final RecordHandler<T> handler;
public CVSParser<T>(RecordHandler<T> handler) {
this.handler = handler;
}
public Set<T> parse(File f) {
Set<T> records = new TreeSet<T>();
for (String line : file ) { //I'm paraphrasing here
records.add(handler.parse( splitIntoFields(line) ));
}
}
}
interface RecordHandler<T> {
public T parse(String[] fields);
}
class CustomerHandler implements RecordHandler<Customer> {
public Customer parse(String[] fields) {
return new Customer(fields[0], fields[1]);
}
}
class ItemHandler implements RecordHandler<Item> {
//...
}
Set<Item> items = new CVSParser<Item>(new ItemHandler()).parse(itemsFile);
或者,您可以将泛型下推到方法级别CVSParser
并使其成为静态:
class CVSParser {
public static <T> Set<T> parse(RecordHandler<T> handler, File f) {
//...
}
}
Set<Item> items = CVSParser.parse(new ItemHandler(), itemsFile);