Tag: null

为什么HashMap.get不能返回一个可为空的类型?

我有点惊讶,下面的例子抛出一个NullPointerException : fun main(args: Array<String>) { val hm = HashMap<String, Int>() hm.put("alice", 42) val x = hm.get("bob") println(x) // BOOM } 我认为在Kotlin代码中没有NullPointerException ? 如果我使用可选类型对x进行注释,那么程序将打印出null : fun main(args: Array<String>) { val hm = HashMap<String, Int>() hm.put("alice", 42) val x: Int? = hm.get("bob") println(x) // null } 我发现了一个特例,还是Kotlin / Java interop的一个普遍问题? 我正在使用IntelliJ IDEA 14.1 Community Edition和Kotlin 0.11.91.1插件。

Kotlin。 如何检查是否可以通过反射字段?

我正在开发一个代码生成器,在运行时从类中获取数据。 该发生器只能与Kotlin一起使用。 目前,我正面临着这个问题,因为我不知道如何检查该字段是否可以空。 所以主要问题是如何通过反射来实现这个检查?

如何正确处理kotlin中的空变量透视?

我的旧Java版本的方法如下所示: @Override public void closeSimpleAlertDialog() { if (mAlertDialog != null && mAlertDialog.isShowing()) { mAlertDialog.dismiss(); } } 正如你可以告诉它检查空引用是否连接到一个对话框mAlertDialog ,如果不是空的话,检查调用方法isShowing() ,然后才引起关闭 – 方法dismiss() 。 很简单 我面临一个问题 – “科特林风格”仍然如何执行相同的操作? 我的第一个版本看这里: if (mAlertDialog != null && mAlertDialog?.isShowing) { mAlertDialog?.dismiss() } 下一步更改mAlertDialog != null && mAlertDialog?.isShowing to mAlertDialog?.isShowing ?: false and last version looks like: if (mAlertDialog?.isShowing ?: false) mAlertDialog?.dismiss() […]

kotlin函数返回null

我正在尝试一些与kotlin的android开发。 在我的情况下,我想覆盖:ContentProvider我必须覆盖函数“查询”。 “查询”返回“光标”类型。 但是,当我用database.query在函数中创建Cursor实例时,我找回了一个“Cursor?” 类型。 所以我只能返回游标,如果它不是null,但是如果它是null,我该怎么办? 这基本上是这样的: override fun query(uri: Uri, projection: Array<out String>?, selection: String?, selectionArgs: Array<out String>?, sortOrder: String?): Cursor { val cursor = queryBuilder.query(db, projection, selection, selectionArgs, null, null, sortOrder) // make sure that potential listeners are getting notified cursor?.setNotificationUri(getContext()?.getContentResolver(), uri) if(cursor != null) return cursor else // what to do here? […]

Kotlin在null上的非null断言

由于Kotlin有非null断言,我发现了一些有趣的东西… val myvar: String = null!! 它会崩溃。 但重点是,它不会在编译时检查。 该应用程序将在运行时崩溃。 不应该抛出编译时错误?