我在像这样定义的列表上执行 add() 时遇到问题
private final List<TraitGroup <? extends TRAIT_Able>> traitGroups;
理想情况下,我想简单地traitGroups.add(TYPE);
但是尽我所能,我就是无法完全正确地使用泛型。
根据要求,Trait_Able 接口和 TraitGroup 类如下...
TRAIT_Able
public interface TRAIT_Able {
String getNAME();
String toString();
}
特质组
@SuppressWarnings("unchecked")
public class TraitGroup <T extends TRAIT_Able>{
private final List <AbstractTrait<T>> abstractTraits;
public TraitGroup() {
abstractTraits = new LinkedList<AbstractTrait<T>>();
}
public AbstractTrait<T>[] toArray() {
AbstractTrait<T>[] abstractTrait = new AbstractTrait[this.abstractTraits.size()];
for (int i =0; i < abstractTrait.length; i ++)
abstractTrait[i] = this.abstractTraits.get(i);
return abstractTrait;
}
public void add(AbstractTrait<T>... source)
{
boolean wasFound;
for (AbstractTrait<T> abstractTrait : source)
{
wasFound = false;
for (AbstractTrait<T> trait : this.abstractTraits)
{
if (abstractTrait.equals(trait))
{
wasFound = true;
trait.add(abstractTrait);
break;
}
}
if (!wasFound)
this.abstractTraits.add(abstractTrait);
}
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append( "Trait group: " +
" Size: " + this.abstractTraits.size() + "\n");
return sb.toString();
}
}