В Java я могу определить интерфейс, вложенный в MainClass
, и я все еще могу ссылаться на этот интерфейс через любой SubClass
, например:
public class MainClass {
interface MyInterface {
public void printName();
}
}
public class SubClass extends MainClass {
}
// Notice here that I use `SubClass.MyInterface` so the client doesn't know MainClass exists.
public void handleInterface(SubClass.MyInterface implementation) {
}
Однако, если я попытаюсь сделать то же самое в Kotlin, это не сработает:
open class MainClass {
interface MyInterface {
fun printName()
}
}
class SubClass : MainClass()
// This will not compile unless I do `MainClass.MyInterface`. See the Java notes about why I might want that.
fun handleInterface(implementation: SubClass.MyInterface) {
}
У меня уже были дебаты о том, что нам не нужно SubClass.MyInterface
, и я могу просто сослаться на него из базового класса, где он был определен, но мне действительно любопытно, почему Kotlin не поддерживает это, но Java, кажется, позволяет это ,