我仍然試圖有效地切換類,我想知道這是否可以工作:生成與編譯器生成的「切換字符串」代碼相同的代碼,但使用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