【发布时间】:2015-07-13 05:22:32
【问题描述】:
以argonaut 为例,在我们的一些项目中,当需要处理 JSON 时,人们会为此使用 argonaut,并对字段进行硬编码,例如:
implicit def AddressCodecJson: CodecJson[Address] =
casecodec3(Address.apply, Address.unapply)("street", "number", "post_code")
如果有很大的案例类,列表会很长:
implicit def AddressCodecJson: CodecJson[Address] =
casecodec12(Address.apply, Address.unapply)("street", "number", "post_code", "...", "...", "...", "...", "...", "...", "...", "...", "...")
我的问题是,为什么我们需要对它们进行硬编码,而不是通过反射获取字段?
是否存在任何技术问题,或者人们在设计 Scala 库时不喜欢使用反射?
【问题讨论】:
-
一般来说,反射很慢,不是线程安全的,最重要的是,在编译时不能证明任何事情。
标签: scala reflection argonaut