我想将此字符串转换为AppDatabase
类型,我尝试了这个Class.forName()
但这不能正常工作。
val str = "com.crypto.wallet.data.AppDatabase_Impl@14731a42"
我的类路径是“com.crypto.wallet.data.AppDatabase”
我是Kotlin环境的新手,请指导我。
脚注:
我需要将值传递给Main.kt到activityTwo.kt,所以在这里我使用ShardPref来处理数据。上面的值不是String类型,所以我需要将其转换为字符串值并传递给ActivityTwo.kt类。重要:ActivityTwo.kt文件有一个方法,它将支持args类型是ClassA,ClassB和ClassC,例如MyFunctionSample(ClassA,ClassB,ClassC),但我有一个String Type的值,所以我需要将类型转换为String到ClassA类型。我来袭了。
你可以用这个:
val classType = Class.forName("packageName.class")
在你的情况下
val classType = Class.forName("com.crypto.wallet.data.AppDatabase_Impl")
val str = "com.crypto.wallet.data.AppDatabase_Impl@14731a42"
为了我对Java的共同理解(是的,Java,而不是Kotlin),这意味着:
com.crypto.wallet.data.AppDatabase
,com.crypto.wallet.data.AppDatabase_Impl
,implements
com.crypto.wallet.data.AppDatabase
,com.crypto.wallet.data.AppDatabase_Impl
的实例用一个“hashcode”14731a42
调用了一些东西(这个哈希码在大多数时候都没有意义)。@Override
toString()
调用。toString()
时,恰好是"com.crypto.wallet.data.AppDatabase_Impl@14731a42"
这导致原始问题中提到的val str
。
在这个实例中可能有一些重要的内容,但是如果你直接调用toString()
它就会丢失。
要实现目标,最好为“AppDatabase”数据结构实现序列化器和反序列化器,一种简单的方法是使用JSON。