android-studio - 如何防止在我的对象上使用 kotlin 扩展?
问题描述
对于我的应用程序中的特殊线程问题,我使用runOrQueue()
接受块的方法创建了一个对象。以下是用于说明目的的简化版本:
class SpecialThread {
fun runOrQueue() {}
}
问题是,当我尝试使用此方法编写代码时,IDE 会首先自动完成一个名为 的 Kotlin 扩展方法run()
,该方法在标准库中定义:
@kotlin.internal.InlineOnly
public inline fun <T, R> T.run(block: T.() -> R): R {…}
这是 IDE 自动完成的屏幕截图:
这在我的应用程序的上下文中尤其危险,因为两者run
都会runOrQueue
产生相似的结果(都运行代码块),但标准库版本会在某些情况下崩溃,并正确包装在runOrQueue
方法中。
有什么方法可以明确禁用run
在我创建的这个特定对象上使用扩展的可能性?事实上,回顾我自己编写的代码,我已经错误地使用run
了两次而不是较长的方法名,这样不好。
解决方案
如果你真的不想重命名你的方法,并且你绝对确定你永远不会使用这个run
函数......
您实际上可以通过单击建议旁边的意图操作图标从自动完成中排除任何方法:
在Settings
,你可以在下面找到这个Editor -> General -> Auto Import
,然后Exclude from import and completion
。例如,要排除内置run
函数,您可以通过上述意图或手动添加此条目:
如果您将此项目设置为范围,则排除项也可以签入 VCS,您会在 下找到它.idea/codeInsightSettings.xml
,其中将有这些相应的内容要排除run
,非常不言自明:
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaProjectCodeInsightSettings">
<excluded-names>
<name>kotlin.run</name>
</excluded-names>
</component>
</project>
推荐阅读
- react-native - 等待反应导航过渡完成
- jquery - Ajax 调用通过单个请求绑定多个 HTML 控件
- excel - 获取图表数据点单元格引用
- typescript - Typescript 接口和函数参数
- android - 如何在 Imageview 上显示 Imageview
- java - Spring boot Basic Authentication和OAuth2在同一个项目中?
- python - 如何在 Python 中将 [[A, B], [A, C], [A, D]] 列表转换为 {A: [B, C, D]} 字典?
- javascript - 如何使用滑块为 amcharts 饼图制作动画?
- java - 房间数据库编译错误:字段具有非唯一的列名
- twitter-bootstrap - 导航栏中的boostrap 4个数字