Почему подклассы не имеют доступа к вложенным интерфейсам в Kotlin? - PullRequest
1 голос
/ 18 марта 2019

В 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, кажется, позволяет это ,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...