【发布时间】:2016-04-01 07:43:51
【问题描述】:
我想向ResultSet 添加两个扩展函数,它们的值是LocalDate。
fun ResultSet.getLocalDate(colName: String) = getDate(colName)?.toLocalDate()
fun ResultSet.getLocalDate(colIndex: Int) = getDate(colIndex)?.toLocalDate()
问题是getDate() 返回一个Date!,显然如果在toLocalDate() 之前没有?. 调用,我会得到一个空错误。但是任何使用此扩展程序的人都必须将结果用作LocalDate? 而不是LocalDate!。
为了保持一致性,我有什么方法可以维护平台类型?并让扩展函数的用户决定是否允许为空?还是我错误地将其视为不便而不是功能?
【问题讨论】:
-
我想这引出了一个更大的设计问题:如果 JDBC 是用 Kotlin 编写的,那么 every 字段 getter 是否可以为空?这可能是有道理的,因为库不知道表中的列是否可以为空......
标签: nullable kotlin kotlin-extension