interface Adder> {
void add(L list, T t);
}
class ArrayListAdder implements Adder> {
@Override
public void add(ArrayList list, String t) {
list.add(t);
}
}
我不认为在添加定义时可以绑定T,因为必须知道T才能声明L具有类型参数(必须以绑定或非绑定形式给出).
我相信你正在寻找相当于这个C 0x代码:
#include
#include
#include
#include
template class CollectionT>
struct Adder {
template
void add(CollectionT &collection, ElementT element);
};
struct VectorAdder : public Adder<:vector> {
template
void add(std::vector &vector, ElementT element) {
vector.push_back(element);
}
};
int main() {
std::vector vi;
vi.push_back(1);
std::vector vd;
vd.push_back(1.1);
VectorAdder va;
va.add(vi, 2); // instantiates VectorAdder::add
va.add(vd, 2.2); // instantiates VectorAdder::add
for_each(vi.begin(), vi.end(), [](int x) { std::cout << x << ' '; });
for_each(vd.begin(), vd.end(), [](double x) { std::cout << x << ' '; });
return 0;
}
而且我很确定在Java中这是不可能的.