Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类而非对象的HashMap_Java - Fatal编程技术网

Java 类而非对象的HashMap

Java 类而非对象的HashMap,java,Java,我想为每个模型类分配ui类。通过这个,我想从用户界面中找到存储日期的类。请不要参考设计,而是我关于HashMap用法的问题;-) 我知道类HashMap,但只用于将对象分配给其他对象 我如何始终将两个类相互链接 public static final HashMap<class,class> componentMap=new HashMap<class, class>(); componentMap.put(ToolPanel.class, ToolComponent.c

我想为每个模型类分配ui类。通过这个,我想从用户界面中找到存储日期的类。请不要参考设计,而是我关于
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<?>>();