Java 类而非对象的HashMap
我想为每个模型类分配ui类。通过这个,我想从用户界面中找到存储日期的类。请不要参考设计,而是我关于Java 类而非对象的HashMap,java,Java,我想为每个模型类分配ui类。通过这个,我想从用户界面中找到存储日期的类。请不要参考设计,而是我关于HashMap用法的问题;-) 我知道类HashMap,但只用于将对象分配给其他对象 我如何始终将两个类相互链接 public static final HashMap<class,class> componentMap=new HashMap<class, class>(); componentMap.put(ToolPanel.class, ToolComponent.c
HashMap
用法的问题;-)
我知道类HashMap
,但只用于将对象分配给其他对象
我如何始终将两个类相互链接
public static final HashMap<class,class> componentMap=new HashMap<class, class>();
componentMap.put(ToolPanel.class, ToolComponent.class);
public static final HashMap componentMap=new HashMap();
componentMap.put(ToolPanel.class,ToolComponent.class);
上面的代码不起作用…应该是:
HashMap<Class,Class>
HashMap
(大写C)
或者更好:
HashMap<Class<?>,Class<?>>
HashMap>
您想要一张地图>
Class
这里指的是,它是一种泛化类型。除非您有更具体的边界,否则可以使用无界通配符
(请参阅有效的Java第二版,第23项:不要在新代码中使用原始类型)
请注意,此处使用的是接口映射
,而不是特定的实现哈希映射
(请参见有效的Java第二版,第52项:通过接口引用对象)
请注意,Map>
仍然映射对象,但这些对象的类型现在是Class
。尽管如此,它们仍然是对象
另见
- ()
-
类文本是由
[…]后跟类的名称
和标记
组成的表达式。类文本的类型,类
,其中C.class
是C
[…]是类的名称
类
使用有界wilcard施加限制 下面是一个强制使用有界通配符的示例,该通配符具有一个键必须为
Class
的Map
Map>Map
=新HashMap>();
map.put(Integer.class,String.class);//好啊
map.put(Long.class,StringBuilder.class);//好啊
map.put(String.class,Boolean.class);//不行!
//编译错误:
//方法put(类)
//在类型映射中>
//不适用于参数(类,类)
如您所见,通用编译时类型安全机制将防止String.class
用作键,因为String
不扩展数字
另见
声明应为:
public static final HashMap<Class<?>, Class<?>> componentMap = new HashMap<Class<?>, Class<?>>();
publicstaticfinalhashmap>componentMap=newhashmap>();
感谢您的回复。对于类与类不同的扩展,泛型的作用是什么?我只有关键类扩展ClassR和值类扩展classB的约束。这可以在泛型中指定吗?@kerll-Map@VineetMenon修复了它,但是你可以随时在archive.org上查找它,或者即使你只是在谷歌上搜索原始的断开链接,你也会得到最新的版本作为第一个结果。
public static final HashMap<Class<?>, Class<?>> componentMap = new HashMap<Class<?>, Class<?>>();