我想将此字符串转换为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类型。这是我的打击。
答案 0 :(得分:0)
您可以使用此:
val classType = Class.forName("packageName.class")
就您而言
val classType = Class.forName("com.crypto.wallet.data.AppDatabase_Impl")
答案 1 :(得分:0)
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
实例,它用一个“哈希码” 14731a42
(这个哈希码在大多数时间是没有意义的)调用了某事。@Override
的{{1}}调用。toString()
时,发生就是toString()
这导致原始问题中提到的"com.crypto.wallet.data.AppDatabase_Impl@14731a42"
。
此实例中可能有一些重要的内容,但是如果直接致电val str
,则会丢失 。
要实现目标,您最好为“ AppDatabase”数据结构实现一个序列化器和反序列化器,一种简单的方法是使用JSON。