

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 を条件分岐に用いる方が無難ではないかと斯様に思いました。