Объявленные исключения в интерфейсе Java от Kotlin - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть набор веб-сервисов, которые перехвачены Аспектом с @AfterThrowing.Реализации веб-сервисов сделаны в Kotlin, но они основаны на сгенерированном коде Java.

Итак, у меня есть интерфейс Java и класс Kotlin, реализующий интерфейс.Когда генерируется код, я хочу вместо этого генерировать определенную ошибку в интерфейсе Java (SomeFault):

public SomeResponseType methodName() throws SomeFault

Если бы все было в Java, это можно было бы сделать довольно легко, например:

MethodSignature methodSignature = (MethodSignature) joinPoint.getStaticPart().getSignature();
Class<? extends Exception>[] declaredExceptions = methodSignature.getExceptionTypes();

... а затем просто выполните конструктор declaredExceptions[0]

Но когда я делаю нечто подобное в Kotlin, кажется, что я не могу найти исключения, объявленные в интерфейсе Java:

val declaredExceptions = methodSignature.exceptionTypes

... дает мне пустой список

вопрос: Как найти исключения, объявленные в интерфейсе Java, при перехвате класса Kotlin, реализующего этот интерфейс?

1 Ответ

0 голосов
/ 21 ноября 2018

Нашли решение на основе комментария JB:

Class.forName(methodSignature.declaringType.genericInterfaces[0].typeName).declaredMethods
.filter { method -> method.name == methodSignature.name }
.forEach { method -> method.exceptionTypes[0] <executed>}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...