如何使用Kotlin中的extends关键字来扩展Java通用接口



如果我有这样的java类:

public interface MyInterface<E extends Apple, EE extends Banana> {
Class<E> foo();
@Nullable
EE bar(E e);
}

如果您有一些Apple和Banana的实现,那么您只需要将它们指定为泛型。

例如,如果我在Java 中实现了Apple和Banana

public class AppleJavaImpl extends Apple {}
public class BananaJavaImpl extends Banana {}

然后你可以在Kotlin 中实现你的Java MyInterface

class MyJavaInterfaceImplementationInKotlin: MyInterface<AppleJavaImpl, BananaJavaImpl> {
override fun foo(): Class<AppleJavaImpl> {
TODO("Not yet implemented")
}
override fun bar(e: AppleJavaImpl?): BananaJavaImpl? {
TODO("Not yet implemented")
}
}

这同样适用于苹果和香蕉的kotlin实现

class AppleKotlinImpl: Apple()
class BananaKotlinImpl: Banana()
class MyJavaInterfaceImplementationInKotlin: MyInterface<AppleKotlinImpl, BananaKotlinImpl> {
override fun foo(): Class<AppleKotlinImpl> {
TODO("Not yet implemented")
}
override fun bar(e: AppleKotlinImpl?): BananaKotlinImpl? {
TODO("Not yet implemented")
}
}

最新更新