在我的Kotlin Android项目中,我创建了一个FileItem类,它扩展了Serializable。
上述的序列化代码编译时没有任何警告。然而,当我需要反序列化文件夹项目时,问题就出现了:
我收到以下警告,如果没有使用suppress_warning注释,我无法解决:
这种代码在Java/Groovy中编译时没有警告(folderItems是FileItem[]),那么我该如何修改kotlin代码以使编译器“满意”?
我注意到在官方Kotlin文档中,Kotlin数组不扩展Serializable,也不开放继承。是否可以通过某种扩展方法“添加”它?
class FileItem(<parameters>) : Serializable, Comparable<FileItem> {
所以我需要将这个类的实例序列化为一个 Bundle
val arguments:Bundle = Bundle()
arguments.putSerializable("folders", folders as Serializable)
其中folders已声明为:
folders:Array<FileItem> (method parameter)
上述的序列化代码编译时没有任何警告。然而,当我需要反序列化文件夹项目时,问题就出现了:
val arguments: Bundle? = getArguments()
if (arguments != null){
foldersItems = arguments.getSerializable("folders") as Array<FileItem>
其中foldersItems被声明为
var foldersItems: Array<FileItem>?
我收到以下警告,如果没有使用suppress_warning注释,我无法解决:
w: <Path to my class>: (78, 28): Unchecked cast: java.io.Serializable! to kotlin.Array<com.loloof64.android.chess_positions_archiver.main_file_explorer.FileItem>
这种代码在Java/Groovy中编译时没有警告(folderItems是FileItem[]),那么我该如何修改kotlin代码以使编译器“满意”?
我注意到在官方Kotlin文档中,Kotlin数组不扩展Serializable,也不开放继承。是否可以通过某种扩展方法“添加”它?
Array<SomeType>
编译成了 Java 的SomeType[]
,后者肯定是可序列化的。 - hotkey