我仍然试图有效地切换类,我想知道这是否可以工作:生成与编译器生成的“切换字符串”代码相同的代码,但使用intern而不是equals。是否所有类名都保证在所有JVM中都被实现?
相关的:Why can't we switch on classes in Java 7+?
我仍然试图有效地切换类,我想知道这是否可以工作:生成与编译器生成的“切换字符串”代码相同的代码,但使用intern而不是equals。是否所有类名都保证在所有JVM中都被实现?
相关的:Why can't we switch on classes in Java 7+?
我怀疑你会陷入麻烦,这种做法。简单的答案是JVM默认实现所有字符串。但是,您的问题比这更深 - 在单个JVM中,类的名称不是唯一的。如果同一个类由两个不同的类加载器加载,那么在JVM中将有两个具有相同名称的类对象实例,但其中的不是彼此相等。如果你想对一个类的切换语义进行建模,那么你需要一种捕获这种行为的方法。
为了在一个开关中使用类名,你必须使用一个字符串,所以它们将在字符串常量池中。所以,即使类名不是自动被拦截的,它们也会是您切换的结果。 –
听起来像一个XY问题。为什么? – chrylis
@AndyTurner不一定,看看http://stackoverflow.com/a/31671438/693752 – Snicolas