以下两行是相同的(对于编译器),即使您有一个Value
作为命名参数调用的类也是如此,这将掩盖类类型
class RowList<Value> extends ArrayList<List<Value>>
class RowList<T> extends ArrayList<List<T>>
这样做的原因是因为第一个里面的值<>
是一个命名类型参数。所以当你尝试做类似的事情时
class RowList<List<Value>> extends ArrayList<List<Value>>
您试图创建一个命名类型参数List<Value>
,它(在 Java 中)是一个无效标识符,但是您会收到类似的错误Syntax error on token(s), misplaced construct(s)
我认为相反,您确实在尝试写
public class RowList extends ArrayList<Value> {
@Override
public boolean add(Value e) {
// TODO Custom code to check and what not
return super.add(e);
}
}
Value
代码库中的自定义对象在哪里。然后在您的代码中的其他地方您可以执行以下操作:
RowList rl = new RowList();
rl.add(new Value(...));
Value v = rl.get(i);
编辑:
前面的示例假定Value
该类是数据的条目行。相反,如果它是单个数据项,并且行由 a 表示,List
那么它将更像以下内容:
public class RowList extends ArrayList<List<Value>> {
@Override
public boolean add(List<Value> e) {
// TODO Custom code to check and what not
return super.add(e);
}
}
RowList rl = new RowList();
List<Value> row = new ArrayList<Value>();
row.add(new Value(...));
rl.add(row);
List<Value> rowGet = rl.get(i);