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>> {
}
但這是不可能的。有沒有一個乾淨的解決這個問題?