Как класс Java может расширить библиотеку Kotlin

Как класс Java может расширить библиотеку Kotlin?

Я понимаю, что все классы kotlin являются окончательными.

У меня есть библиотека, и мне нужно переопределить некоторые методы. Но потом расширяю библиотеку, получаю ошибку

public class Editor extends EditorLibrary //error Cannot inherit from final

Есть ли шансы расширить окончательный класс kotlin, потому что я не могу изменить его, чтобы открыть?

Возможно в этом случае поможет паттерн Decorator, refactoring.guru/design-patterns/decorator

Andrey 21.11.2022 10:09

Вы не можете расширить конечный класс. Если он окончательный, то он был разработан, чтобы помешать вам его расширить.

Louis Wasserman 21.11.2022 17:50
Редкие достижения на Github ✨
Редкие достижения на Github ✨
Редкая коллекция доступна в профиле на GitHub ✨
LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Как включить TLS в gRPC-клиенте и сервере : 2
Как включить TLS в gRPC-клиенте и сервере : 2
Здравствуйте! 🙏🏻 Надеюсь, у вас все хорошо и добро пожаловать в мой блог.
0
2
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если у вас есть контроль над библиотекой, вы можете открыть класс для расширения с помощью ключевого слова open, в противном случае, как вы упомянули, класс не был создан для расширений...

open EditorLibrary(...) {
}

В таком случае вы можете рассмотреть возможность использования композиции вместо наследования... например. :

public class Editor {
    private final EditorLibrary editor;
    
    ...
}

Нет, я не контролирую это.

Slava 21.11.2022 10:05

Я добавил альтернативу ответу, вы можете использовать здесь композицию вместо наследования, однако, если вы ее не контролируете, вы можете расширить сам класс

Yonatan Karp-Rudin 21.11.2022 10:08

Другие вопросы по теме