我有一个通用容器,其中包含e类型的对象:
public class Container<E> {
private final E e;
public Container(E e) {
this.e = e;
}
public E get() {
return e;
}
}
我有一个装各种容器的桶:
public class Bucket {
private final Map<String, Container<?>> containers = new HashMap<>();
public void put(String name, Container<?> container) {
containers.put(name, container);
}
public Container<?> get(String name) {
Container<?> container = containers.get(name);
return container;
}
}
我希望能够把容器(各种类型)到桶中,并取回他们在一个类型安全的方式。
Container<Long> longs = new Container<>(100L);
Container<String> strings = new Container<>("Hello");
Bucket bucket = new Bucket();
bucket.put("longs", longs);
bucket.put("strings", strings);
但正如你所知,我失去了类型安全:
Container<?> longs1 = bucket.get("longs");
Container<?> strings1 = bucket.get("strings");
我似乎不知道怎样才能实现以下目标:
Container<Long> longs1 = bucket.get("longs");
Container<String> strings1 = bucket.get("strings");
1条答案
按热度按时间hmmo2u0o1#
我的解决方案。我想这很符合我的需要:
进行测试: