RuntimeException и GraphQLError в Kotlin и Java - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь разработать REST API с GraphQL и Kotlin, и я сталкиваюсь со следующей проблемой: я пытаюсь создать пользовательское исключение, которое расширяет RuntimeException и реализует GraphQLError, и в Kotlin я не могу этого сделать, потому что я получаю это : Случайное переопределение при использовании стороннего интерфейса Java и расширении RuntimeException в kotlin .

Я решил эту проблему с помощью обходного пути, создав класс Java для своего CustomException.

Но я не знаю, почему, когда я создаю класс kotlin, который расширяет RuntimeException и реализует GraphQLError, мне нужно переопределить метод getMessage() из GraphQLError, но когда я создаю класс java, который расширяет RuntimeException и реализует GraphQLError. Мне не нужно переопределять метод getMessage() из GraphQLError.

Спасибо!

1 Ответ

0 голосов
/ 05 июля 2018

Кажется, что переопределение метода доступа к свойству функцией еще не поддерживается. В настоящее время это ошибка по вашей ссылке. Это можно легко проверить с помощью простого примера, подобного этому:

class Sample(val message : String) {
    fun getMessage() :String = "MyString"
}

Это происходит потому, что свойство message (в вашем случае сообщение от Throwable) и функция getMessage (в вашем случае getMessage из GraphQL) преобразуются в одну и ту же сигнатуру JVM. Мне кажется, что текущий статус-кво состоит в том, что средства доступа к свойствам не рассматриваются как отдельные члены, поэтому они не могут быть переопределены функциями-членами или даже реализовать абстрактные функции. Я не уверен, почему это так.

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