class Qiita
class Zenn
class Magicode
when (Magicode::class.java.simpleName) {
Qiita::class.java.simpleName -> print("想定外です ×")
Zenn::class.java.simpleName -> print("想定外です ×")
Magicode::class.java.simpleName -> print("想定通りです ◎ Magicode::class.java.simpleName = ${Magicode::class.java.simpleName}") // なぜか実行されない 🧐
}
Qiita
クラスと Zenn
クラスと Magicode
クラスは同一パッケージ内に配置していたのですが、難読化後の ::class.java.simpleName
は重複する値に書き変わっていました。例 | 値 |
---|---|
Qiita::class.java.simpleName | d |
Zenn::class.java.simpleName | f |
Magicode::class.java.simpleName | f |
::class.java.simpleName
の値は被らないであろうと思い込んでいました( ::class.java.simpleName
の Javadoc や中身を読めていませんでした 🙇♂️ )。::class.java.simpleName
は使用せずに、難読化の影響を受けない文字列などの定数や、唯一無二を担保できる Enum や Sealed classes を条件分岐に用いる方が無難ではないかと斯様に思いました。