Объединение макроаннотаций scala - PullRequest
0 голосов
/ 25 октября 2018

Я не хочу объединять две макроаннотации.Он прекрасно компилируется, но попытка использовать любой метод для объекта-компаньона дает

java.lang.NoClassDefFoundError: Test$

При отдельном использовании макро-аннотации работают нормально.

@ JsonCodec:

import io.circe.generic.JsonCodec
@JsonCodec
case class Test(a: Int)

println(Test.decodeTest.hashCode())

>> 161960012

@Линзы

import monocle.macros.Lenses
@Lenses("_")
case class Test(a: Int)

println(Test._a.hashCode())

>> 1685232414

Но если я попытаюсь скомбинировать это

import io.circe.generic.JsonCodec
import monocle.macros.Lenses
@Lenses("_")
@JsonCodec
case class Test(a: Int)

>> Done compiling.
>> [E] Exception in thread "main" java.lang.NoClassDefFoundError: Test$
>> [E]  at Main$.main(Main.scala:39)
>> [E]  at Main.main(Main.scala)
>> [E] Caused by: java.lang.ClassNotFoundException: Test$
>> [E]  at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
>> [E]  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>> [E]  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
>> [E]  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>> [E]  ... 2 more

Это не удастся во время выполнения.

Любой способ исправить это или это просто ограничение макросаиспользование аннотаций?

UPD: определение работ по обходу сопутствующего объекта.

import io.circe.generic.JsonCodec
import monocle.macros.Lenses

@JsonCodec @Lenses("_") case class Test(a: Int)
object Test

1 Ответ

0 голосов
/ 25 октября 2018

Похоже на ограничение макроаннотаций.Работы по обходу сопутствующего объекта

@JsonCodec @Lenses("_") case class Test(a: Int)
object Test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...