在我的应用程序中,我有一个Board。董事会由单元组成。每个单元格都有一个int值。 有几种类型的Board将扩展Board。 每种类型的电路板将以不同方式表示电池。例如,一个会使用一个List,anothr会使用一个Tree。java“generic generic type”
原来这就是被试:
public abstract class Board<T> {
T<Cell> cells; //error - The type T is not generic; it cannot be parameterized with arguments <Cell>
protected abstract void setValues(T<Integer> values);
}
不幸的是,我不能将T泛型类型。 我该如何实施?
也许让'T扩展集合'在你的班级签名?这样你可以使用'List'或'Tree'?对我的建议不太自信,如果有必要,我想批评。 –
你能提供一个你将用于'T'的类的例子吗?通常情况下,您只需将参数化类型嵌套在Board的通用声明中,但没有任何意义的是拥有一个不受限制的'T'参数,然后您希望这个参数是通用的;如果'T'是'Integer'呢?此外,这是一种情况,只是子类化'Board'比拥有泛型参数更有意义吗?毕竟,客户必须意识到差异,如果它提供了他们的代表。 – chrylis
草图绘制两个用例会非常有帮助。特别是你打算如何使用'setValues'方法,电路板应该如何在内部访问它的'cells',以及'T'可以是什么类型(当你说“Tree”时,你是指'TreeSet'?是一个'集合',那么这是相当微不足道的......) – Marco13