我陷入了下面的情況。我有一個叫做Fusion的抽象類,它應該有一個所謂的ClusteringObjects(也是一個抽象類)的TreeSet。因此,我將類型設置爲泛型:Treeset添加一個子類
public abstract class Fusion {
protected TreeSet<? extends ClusteringObject> metadata;
//CODE
}
在融合(被稱爲TemporalFusion)的子類,我想補充TemporalClusteringObjects(ClusteringObject的子類)的TreeSet的,但這不起作用。
public class TemporalFusion extends Fusion {
public TemporalFusion(Model metadataModel, String fusionId) {
//CODE ...
metadata = new TreeSet<TemporalClusteringObject>(new TimestampComparator());
}
public void add(int metadataIndex, ParsedMetadata singleMetadata) {
//create temporalClusteringObject (works fine)
metadata.add(temporalClusteringObject);
}
}
該插件提供了以下故障:
The method add(capture#2-of ? extends ClusteringObject) in the type TreeSet<capture#2- of ? extends ClusteringObject> is not applicable for the arguments (TemporalClusteringObject)
是否有一個通用的解決這個問題,即不融合的每個子類必須實現自己的元數據TreeSet中與ClusteringObject繼承它自己的條目類型?
你可以讓'TreeSet在你的情況下工作嗎? –
dasblinkenlight
@dasblinkenlight:既然'ClusteringObject'是一個抽象類,這是行不通的。 – BaCci