Tag: 摘要

是否可以在Kotlin界面中指定一个静态函数?

我想要做这样的事情: interface Serializable<FromType, ToType> { fun serialize(): ToType companion object { abstract fun deserialize(serialized: ToType): FromType } } 甚至这会对我有用: interface Serializable<ToType> { fun serialize(): ToType constructor(serialized: ToType) } 但是都没有编译。 有没有这样的语法,或者我会被迫使用这个接口的工厂? 还是有另一个答案? 😮那会很整洁!

抽象类与Lambda参数

由于kotlin对lambdas有很好的支持,我开始使用lambdas作为abstract类的构造函数参数,而不是声明abstract val/fun 。 我认为这更简洁,特别是因为val type get的推断。 这有什么缺点? abstract class AbstractListScreen<T> ( val data: Set<T>, val filterators: (T) -> Set<String> ) { fun open() { /* … */ } } class OrderListScreen : AbstractListScreen<Data>(data = setOf(), filterators = { setOf(it.toString()) } ) { fun someEvent() { /* …*/ } }

Kotlin与身体的抽象方法

如上所述:如果接口中的函数没有主体,则默认为抽象。 但是接口的功能与身体无关。 例: interface MyInterface { fun foo() { print("Something") } fun bar() } fun main(args: Array<String>) { println(MyInterface::foo.javaMethod) println(MyInterface::bar.javaMethod) } 输出将是: public abstract void MyInterface.foo() public abstract void MyInterface.bar() 如何可能,具有定义身体的方法是抽象的?