Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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
具有唯一id的Java反射_Java_Reflection_Uniqueidentifier - Fatal编程技术网

具有唯一id的Java反射

具有唯一id的Java反射,java,reflection,uniqueidentifier,Java,Reflection,Uniqueidentifier,我试图构建HashMap,使其键是唯一的id,值是通过反射找到的类的名称 我的问题是创建那些唯一的ID。我怎么能肯定每个类都有唯一的id,而且它的id永远不会更改为。我的意思是,如果我要创建新类,它将永远不会更改旧的类id 更新 我需要的id将是一个整数。(很抱歉,我没有提到:P)不能保证它是完全唯一的,但仅使用完全限定的类名就足够了。完全限定路径的字符串名称,如java.lang.Math将是一个很好的“unqiue”id,并且应该很少发生哈希冲突 范例 map.put(MyClass.cla

我试图构建HashMap,使其键是唯一的id,值是通过反射找到的类的名称

我的问题是创建那些唯一的ID。我怎么能肯定每个类都有唯一的id,而且它的id永远不会更改为。我的意思是,如果我要创建新类,它将永远不会更改旧的类id

更新

我需要的id将是一个整数。(很抱歉,我没有提到:P)

不能保证它是完全唯一的,但仅使用完全限定的类名就足够了。完全限定路径的

字符串
名称,如
java.lang.Math
将是一个很好的“unqiue”id,并且应该很少发生哈希冲突

范例

map.put(MyClass.class.toString(), MyClass.class);
编辑:如果您需要将其设置为int,则始终可以使用字符串哈希代码

map.put(MyClass.class.toString().hashCode(), MyClass.class);

类名的完整路径可以工作吗?e、 内置字符串的g java.lang.String?您所说的
创建新类是什么意思?它永远不会更改旧的类id
?@RobWatts,在存在可修改的类路径或多个类加载器的情况下,完整的类名可能不足。@例如,oconnor0用于执行自动递增id,并且新类将在旧类之前找到class@Someone,你是如何得到一个新的和旧的同名类的?正如我所说的,这不是保证,但我敢大胆猜测,你会很难找到真正有冲突的类。另外,如果您非常担心,您也可以使用MultiMap,或者只是制作一个映射来解决任何潜在的哈希冲突。