0
从文件读取行时,我使用的是Guava's LineProcessor
接口。我创建了我的课,名为Line Loader
,它将存储读取的行。我想这是通用在收线的选择应存放在我这么写是这样的:扩展集合通用类的通用类
其中具有init()
方法我强迫子类来选择集合的类型,例如:
public abstract class LinkedLineLoader<T> extends LineLoader<T> {
@Override
protected Collection<T> init() {
return new LinkedList<T>();
}
}
我计划这样做:
public class LineLoader<T> implements LineProcessor<C<T> extends Collection<T>> {
private final C<T> result;
public LineLoader() {
result = new C<T>();
}
protected boolean add(final T line) {
return result.add(line);
}
@Override
public boolean processLine(final String line) throws Exception {
final T data = parser.parseLine(line);
if (data == null) {
return false;
}
return add(data);
}
@Override
public C<T> getResult() {
return result;
}
}
使后者subclases(如果需要的话)可以这样做:
public class LinkedLineLoader<T> extends LineLoader<LinkedList<T>> {
}
但这是不可能的。有没有一个干净的解决这个问题?