Как класс Java может расширить библиотеку Kotlin?
Я понимаю, что все классы kotlin являются окончательными.
У меня есть библиотека, и мне нужно переопределить некоторые методы. Но потом расширяю библиотеку, получаю ошибку
public class Editor extends EditorLibrary //error Cannot inherit from final
Есть ли шансы расширить окончательный класс kotlin, потому что я не могу изменить его, чтобы открыть?
Вы не можете расширить конечный класс. Если он окончательный, то он был разработан, чтобы помешать вам его расширить.
Если у вас есть контроль над библиотекой, вы можете открыть класс для расширения с помощью ключевого слова open
, в противном случае, как вы упомянули, класс не был создан для расширений...
open EditorLibrary(...) {
}
В таком случае вы можете рассмотреть возможность использования композиции вместо наследования... например. :
public class Editor {
private final EditorLibrary editor;
...
}
Нет, я не контролирую это.
Я добавил альтернативу ответу, вы можете использовать здесь композицию вместо наследования, однако, если вы ее не контролируете, вы можете расширить сам класс
возможно в этом случае поможет паттерн Decorator, refactoring.guru/design-patterns/decorator