Tag: 扩展function

为“Number Classes”重载+和+ =运算符

我想为封装简单Number的类创建扩展函数。 例如DoubleProperty 。 我遇到了这个问题,我不能同时重载+和+=运算符。 我不想创建一个行为,通过以下测试: class DoublePropertyTest { lateinit var doubleProperty: DoubleProperty @Before fun initialize() { doubleProperty = SimpleDoubleProperty(0.1) } @Test fun plus() { val someProperty = doubleProperty + 1.5 assertEquals(someProperty.value, 1.6, 0.001) } @Test fun plusAssign() { val someProperty = doubleProperty doubleProperty += 1.5 //error if + and += are overloaded assert(someProperty === doubleProperty) […]

从Java访问Kotlin扩展function

有没有可能从Java代码访问扩展函数? 我在Kotlin文件中定义了扩展function。 package com.test.extensions import com.test.model.MyModel /** * */ public fun MyModel.bar(): Int { return this.name.length() } MyModel是一个(生成的)java类。 现在,我想在我的正常的java代码中访问它: MyModel model = new MyModel(); model.bar(); 但是,这是行不通的。 IDE将无法识别bar()方法,编译失败。 kotlin的静态函数使用了什么工作: public fun bar(): Int { return 2*2 } 通过使用import com.test.extensions.ExtensionsPackage所以我的IDE似乎配置正确。 我搜索了kotlin文档中的整个Java-interop文件,也搜索了很多,但是我找不到它。 我究竟做错了什么? 这甚至有可能吗?

从Kotlin的另一个类访问静态扩展函数?

假设我们有以下扩展function: class Helper { companion object { fun Int.plus(value: String) = Integer.valueOf(value).plus(this) } } 如何从另一个类的Helper类访问plus扩展function。 有没有一种方法可以让我们做这样的事情: class OtherClass { fun someMethod() { val eight = 7.Helper.Companion.plus(“1”) } }

kotlin中的全局扩展函数

嘿,我想在kotlin上做一个类,它将包含我将在几个地方使用的所有扩展函数,例如: class DateUtils { //in this case I use jodatime fun Long.toDateTime() : DateTime = DateTime(this) fun String.toDateTime() : DateTime = DateTime.parse(this) } class SomeClassWithNoConnectionToDateUtils { fun handleDataFromServer(startDate: String) { someOtherFunction() //startDate knows about toDateTime function in DateUtils startDate.toDateTime().plusDays(4) } } 有没有办法来执行这样的操作

让我们也来申请,如果在Kotlin拿走了一些未知的东西

我读了许多关于这些项目的Kotlin文件。 但是我不太清楚。 Kotlin的用途是什么, 还有 , 如何 取得细节? 我需要每个项目的例子。 请不要发布Kotlin文档。 我需要一个实时的例子和这些项目的用例。