tl:dr;是否有可能import
方法在另一個類的伴侶對象中,沒有通過Companion
來驗證導入的合格?也就是說,是否有任何可能的方式我可以說import Bar.toFoo
而不是import Bar.Companion.toFoo
,假設toFoo
是Bar
的伴侶對象上的方法?靜態導入Kotlin Companion方法?
我們正在從Java遷移到Kotlin。我們班是這樣的:
class Bar {
static Foo toFoo() {
return new Foo();
}
}
,然後使用它,從出現這種情況是科特林一類,我們這樣說:
import Bar.toFoo;
// ...
Bar().convert(toFoo()); // like a Java 8 Collector
// ...
當我們轉換Bar
到科特林,它看起來像這樣:
class Bar {
companion object {
@JvmStatic fun toFoo() = Foo()
}
}
我們想調用代碼不修改工作,但是
import Bar.toFoo
不再有效,即使使用@JvmStatic!相反,我們有將其更新爲
import Bar.Companion.toFoo
我們寧願沒有這樣做 - 我們要切換酒吧類科特林而不更新呼叫者。
想法?我們使用Kotlin 1.1.2-2。
我不知道爲什麼你嘗試使用'欄()的原因轉換。 (toFoo())'而不是'Bar()。toFoo()'。爲什麼它必須是靜態的? – Naetmul
那麼,因爲'toFoo()'實際上*是一個Java 8 Collector類,就像'Collectors.toList()'或者'Collectors.toSet()'一樣,並且是以同樣的方式建模的。 – Max
類似於'import static example.Bar.toFoo;'應該可以工作(從您的示例中更改包,因爲Java不能在根包中包含類) - 您看到了什麼編譯器錯誤?它在IDE中還是在構建中? –