如果我有一个异类集合,我完全知道我要放置的类型,有没有办法强制执行这个。
举个例子,假设我有一个映射,它有一个字符串键和一个值,可以是三个不相关的类型。现在我知道我只会把ClassA和ClassB或者java.lang.String
例如下面是代码
public HetroCollection
{
public Map values;
}
public ClassA
{
}
public ClassB
{
}
public static void Main(String args[])
{
HetroCollection collection = new HetroCollection();
collection.values.add("first", new ClassA());
collections.values.add("second", new ClassB());
collections.values.add("third" , "someString");
//BAD want to stop random adds
collections.values.("fourth" , new SomeRandomClass());
}
我想到的选择是:
让类实现一个公共接口并在映射上使用泛型(问题是如果这也涉及到JDK或第三方的库类,那么改变类不是一个选项
隐藏地图并提供类似于
put(字符串键,ClassA值);
put(字符串键,ClassB值);
put(字符串键,字符串值);
get(字符串键);
重新考虑设计,不要使用异类集合(不确定如何用其他方式表示)
寻找最佳实践答案。