Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么我的LocalDate.parse不能使用从gson插入的值?_Android_Kotlin_Gson_Localdate - Fatal编程技术网

Android 为什么我的LocalDate.parse不能使用从gson插入的值?

Android 为什么我的LocalDate.parse不能使用从gson插入的值?,android,kotlin,gson,localdate,Android,Kotlin,Gson,Localdate,我有一门课: data class Day(val date: String, val events: List<Event>){ val localDateTimeDate: LocalDate by lazy { LocalDate.parse(date) } } 如果有一天我尝试读取。localDateTimeDate,我会得到一个nullpointer异常: 2019-08-13 00:06:13.075 21870-21942/nl.joo

我有一门课:

data class Day(val date: String, val events: List<Event>){
    val localDateTimeDate: LocalDate by lazy {
        LocalDate.parse(date)
    }
}
如果有一天我尝试读取
。localDateTimeDate
,我会得到一个nullpointer异常:

2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object kotlin.Lazy.getValue()' on a null object reference
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at nl.joozd.joozdter.data.Day.getLocalDateTimeDate(Unknown Source:25)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at nl.joozd.joozdter.ui.PdfParserActivity$onCreate$$inlined$let$lambda$1.invoke(PdfParserActivity.kt:140)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at nl.joozd.joozdter.ui.PdfParserActivity$onCreate$$inlined$let$lambda$1.invoke(PdfParserActivity.kt:28)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at org.jetbrains.anko.AsyncKt$doAsync$1.invoke(Async.kt:143)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at org.jetbrains.anko.AsyncKt$doAsync$1.invoke(Unknown Source:0)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at org.jetbrains.anko.AsyncKt$sam$java_util_concurrent_Callable$0.call(Unknown Source:2)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at java.lang.Thread.run(Thread.java:764)

如果一个类没有无参数构造函数,Gson会在不调用构造函数的情况下创建一个对象,因此存储
lazy
delegate的字段不会初始化,并且在访问委托给它的属性时会得到一个NullPointerException


有关可能的解决方案,请参见此问题:

谢谢!这会让我重新开始:)我用
val-gsonDaysList=(Gson().fromJson(jsonData,listType))
替换为
val-gsonDaysList=(Gson().fromJson(jsonData,listType))
val-daysList=gsonDaysList.map{Day(it.date,it.events)}
,但是基本上把gson转储到一个类中,然后我用它来填充另一个类。也许不是最优雅的方式,但它很有效。
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object kotlin.Lazy.getValue()' on a null object reference
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at nl.joozd.joozdter.data.Day.getLocalDateTimeDate(Unknown Source:25)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at nl.joozd.joozdter.ui.PdfParserActivity$onCreate$$inlined$let$lambda$1.invoke(PdfParserActivity.kt:140)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at nl.joozd.joozdter.ui.PdfParserActivity$onCreate$$inlined$let$lambda$1.invoke(PdfParserActivity.kt:28)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at org.jetbrains.anko.AsyncKt$doAsync$1.invoke(Async.kt:143)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at org.jetbrains.anko.AsyncKt$doAsync$1.invoke(Unknown Source:0)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at org.jetbrains.anko.AsyncKt$sam$java_util_concurrent_Callable$0.call(Unknown Source:2)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
2019-08-13 00:06:13.075 21870-21942/nl.joozd.joozdter W/System.err:     at java.lang.Thread.run(Thread.java:764)