【发布时间】:2021-10-22 19:22:41
【问题描述】:
有一个Java 库的类有aVeryLongNameThatIDontWantToTypeEveryTime。这个类有一些具有通用名称的静态方法:get()、abs() 等。
现在我需要在我的 kotlin 代码中使用它们构建复杂的调用,如下所示:
aVeryLongNameThatIDontWantToTypeEveryTime.get(aVeryLongNameThatIDontWantToTypeEveryTime.abs(aVeryLongNameThatIDontWantToTypeEveryTime.get(...), aVeryLongNameThatIDontWantToTypeEveryTime.get(...)))
现在,我想使用本地范围功能,以免经常重复自己。但是,只需使用
with(aVeryLongNameThatIDontWantToTypeEveryTime) {
get(abs(get(...), get(...)))
}
不起作用:它抱怨 aVeryLongNameThatIDontWantToTypeEveryTime 没有伴随对象。 (当然不是,它是一个 Java 类。)
唯一的“解决方案”是在文件中全局导入aVeryLongNameThatIDontWantToTypeEveryTime.*,这不是很好,因为方法名称非常通用并且可能发生冲突。
【问题讨论】:
-
考虑使用Type aliases?
-
确实是减少长度的好方法,但您仍然需要在任何地方都有
someAlias.。这是针对症状(长名称)而不是实际问题(重复)。
标签: kotlin scoping kotlin-java-interop