【发布时间】:2020-12-22 10:25:46
【问题描述】:
我有以下课程:
@Parcelize
data class Collection<T : Parcelable> constructor(
var models: List<T>,
var cursor: String?
) : Parcelable
当我使用Kotlin 1.4.10时,项目构建正确,没有任何错误,然后我将项目更新为Kotlin 1.4.21,并迁移到使用kotlin-parcelize而不是kotlin-android-extensions,所以在Kotlin更新之后,在构建项目我收到以下错误:
> Task :domain:kaptDebugKotlin FAILED
/Library/DevelopmentArea/workspace/baaz_android_new/clean_domain/domain/build/tmp/kapt3/stubs/debug/com/myapp/domain/model/Collection.java:101: error: non-static type variable T cannot be referenced from a static context
public final com.myapp.domain.model.Collection<T>[] newArray(int size) {
^/Library/DevelopmentArea/workspace/baaz_android_new/clean_domain/domain/build/tmp/kapt3/stubs/debug/com/myapp/domain/model/Collection.java:110: error: non-static type variable T cannot be referenced from a static context
public final com.myapp.domain.model.Collection<T> createFromParcel(@org.jetbrains.annotations.NotNull()
注意:我使用的是 Android Studio 4.1.1
【问题讨论】:
-
想必你要找的答案在here
-
这能回答你的问题吗? Migrate to the new kotlin-parcelize
-
在实现同一个接口时不能将接口用作泛型,而是最好使用实现 Parcelable 的列表类型
-
它已在 Kotlin
1.5.0中修复。在 Android Studio4.2.1中使用 Kotlin 插件1.5.0测试。
标签: android kotlin parcelable kotlin-android-extensions