Ошибка компиляции Kotlin при использовании Parcelable

Я пытаюсь реализовать Parcelable для своего класса. Android Studio автоматически генерирует код для меня. Теперь мой класс выглядит так:

  @Parcelize data class BankCard(var owner: String, var number: String, var isDefaultCard: Boolean) : Parcelable { constructor(parcel: Parcel) : this( parcel.readString(), parcel.readString(), parcel.readByte() != 0.toByte()) { } override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeString(owner) parcel.writeString(number) parcel.writeByte(if (isDefaultCard) 1 else 0) } override fun describeContents(): Int { return 0 } companion object CREATOR : Parcelable.Creator<BankCard> { override fun createFromParcel(parcel: Parcel): BankCard { return BankCard(parcel) } override fun newArray(size: Int): Array<BankCard?> { return arrayOfNulls(size) } } } 

Но когда я запускаю проект, я получаю эту ошибку компиляции :: app: kaptDebugKotlin

Вот журнал:

  public static final model.BankCard$Creator CREATOR = null; e: ^ e: symbol: class BankCard$Creator e: location: package model e: /Users/sunshine/Desktop/Cars/app/build/tmp/kapt3/stubs/debug/model/Car.java:16: error: cannot find symbol e: e: public static final model.Car$Creator CREATOR = null; e: ^ e: symbol: class Car$Creator e: location: package model e: java.lang.IllegalStateException: failed to analyze: org.jetbrains.kotlin.kapt3.diagnostic.KaptError: Error while annotation processing at org.jetbrains.kotlin.analyzer.AnalysisResult.throwIfError(AnalysisResult.kt:57) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules(KotlinToJVMBytecodeCompiler.kt:138) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:170) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:58) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:93) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:46) at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:92) at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$1$2.invoke(CompileServiceImpl.kt:386) at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$1$2.invoke(CompileServiceImpl.kt:98) at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:832) at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:98) at org.jetbrains.kotlin.daemon.common.DummyProfiler.withMeasure(PerfUtils.kt:137) at org.jetbrains.kotlin.daemon.CompileServiceImpl.checkedCompile(CompileServiceImpl.kt:859) at org.jetbrains.kotlin.daemon.CompileServiceImpl.doCompile(CompileServiceImpl.kt:831) at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:385) at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:346) at sun.rmi.transport.Transport$1.run(Transport.java:200) at sun.rmi.transport.Transport$1.run(Transport.java:197) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:196) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: org.jetbrains.kotlin.kapt3.diagnostic.KaptError: Error while annotation processing at org.jetbrains.kotlin.kapt3.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:90) at org.jetbrains.kotlin.kapt3.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:42) at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.runAnnotationProcessing(Kapt3Extension.kt:205) at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.analysisCompleted(Kapt3Extension.kt:166) at org.jetbrains.kotlin.kapt3.ClasspathBasedKapt3Extension.analysisCompleted(Kapt3Extension.kt:82) at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM$analyzeFilesWithJavaIntegration$2.invoke(TopDownAnalyzerFacadeForJVM.kt:96) at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:106) at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$default(TopDownAnalyzerFacadeForJVM.kt:83) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:377) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:68) at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:96) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:368) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules(KotlinToJVMBytecodeCompiler.kt:133) ... 29 more 

Пожалуйста помоги!

См. https://blog.jetbrains.com/kotlin/2017/08/kotlin-1-1-4-is-out/ и https://github.com/Kotlin/KEEP/blob/master/proposals/extensions/ android-parcelable.md для получения более подробной информации о @Parcelize .

@Parcelize генерировать Parcelable методы для вас. Вам не нужно создавать их самостоятельно. Если вы создаете его самостоятельно, удалите @Parcelize .

Также обратите внимание, что @Parcelize является экспериментальным.

Это ошибка в андроид-студии, которая еще не может понять, что @Parcelize генерирует код Parcelization.

в то же время, вы можете просто игнорировать эту проверку на линт, добавив

 @SuppressLint("ParcelCreator") 

поэтому ваш код будет

 @Parcelize @SuppressLint("ParcelCreator") data class BankCard(var owner: String, var number: String, var isDefaultCard: Boolean) : Parcelable 
Intereting Posts
Как принудительно ввести пустую, ненулевую строку в Котлин? Почему intairiJ IDEA-область видимости «предоставляется» вместо «компиляции»? О Котлине и функциях Kotlin Coroutines: Нужно ли синхронизировать общее состояние? Когда следует предпочесть функции расширения Котлина? Как изменить карту в Котлине? коллекции kotlin, преобразующие карту в новую карту со значениями, вычисленными из оригинала Как обеспечить общий тип с помощью взаимодействия Kotlin RxJava Live Reactive Queue (с выключенным переключателем) Исключение происходит во время действия Expression Expression: Kotlin – Перегрузка оператора вызовом оператора ReactiveStreams NPE при использовании publishOn с пользовательским издателем В Kotlin, как я могу создать экземпляр класса с использованием собственного параметра java? Ошибка с JSONObject () – Kotlin Студия Android не разрешает классы, написанные в Kotlin (.kt) в среде IDE, но компилирует отлично