首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合scala宏注释

组合scala宏注释
EN

Stack Overflow用户
提问于 2018-10-25 06:43:21
回答 1查看 197关注 0票数 2

我不打算合并两个宏注释。它编译得非常好,但是尝试使用同伴对象上的任何方法

代码语言:javascript
复制
java.lang.NoClassDefFoundError: Test$

如果单独使用,则宏注释可以正常工作。

@JsonCodec:

代码语言:javascript
复制
import io.circe.generic.JsonCodec
@JsonCodec
case class Test(a: Int)

println(Test.decodeTest.hashCode())

>> 161960012

@透镜

代码语言:javascript
复制
import monocle.macros.Lenses
@Lenses("_")
case class Test(a: Int)

println(Test._a.hashCode())

>> 1685232414

但如果我试着把它结合起来

代码语言:javascript
复制
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:定义配套的对象解决方案是可行的。

代码语言:javascript
复制
import io.circe.generic.JsonCodec
import monocle.macros.Lenses

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-25 09:26:14

看起来像宏注释限制。伙伴对象解决方案

代码语言:javascript
复制
@JsonCodec @Lenses("_") case class Test(a: Int)
object Test
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52982928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档