Я пишу новые функции на Kotlin, но некоторые вещи уже написаны на Java.
Я пишу тесты в Mockito(Kotlin), но у Mockito проблема с последним классом, поэтому я создал:
annotation class Mockable {}
И добавил в Gradle-build:
apply plugin: 'kotlin-allopen'
allOpen {
annotation('com.Mockable')
}
Итак, используя этот класс аннотации, я могу имитировать класс Kotlin.
Как я могу использовать эту аннотацию в классе Java?




Вам это не нужно в Ява. Но независимо от этого есть альтернативный метод использования Mockito с Котлин:
Создайте файл SRC / тест / ресурсы / mockito-расширения / org.mockito.plugins.MockMaker с содержимым:
mock-maker-inline
Это изменяет поведение насмешек, чтобы также поддерживать классы final, такие как Котлин. Однако для некоторых классов Ява мне впоследствии пришлось использовать spy() вместо mock().
Я видел этот вариант, но он почти в 3 раза медленнее по производительности
How I can use this annotation in Java class ?
Вы не можете использовать эту аннотацию таким образом, потому что kotlin-allopen работает только с классами Kotlin. В Java просто не помечайте классы как final ...
Если на то пошло, в Kotlin это тоже не кажется полезным, если я правильно вас понял: kotlin-allopen используется, когда аннотация будет обрабатываться каким-либо образом, что требует создания подклассов аннотированного типа, поэтому вам нужно написать open Аннотация также как и. Здесь вы можете записать openвместо@Mockable.
вы пробовали просто использовать
@Mockable?