Java的Foo.class
以及Scala的classOf[Foo]
文字类语法返回有关该类的反射视图。
是否有可能提供类似.method/.field
或methodOf[]
/ fieldOf[]
的内容以获得对方法和字段的可比较的反思性访问?
如何在Java / Scala中实现这样的东西?
在Java的情况下,我会假设这需要语言更改(非常不可能)或者使用字节码工具/ AspectJ进行一些操作,而在Scala中,可能需要使用隐式转换来实现它。
答案 0 :(得分:8)
是和否。 Paul Phillips肯定对此类事情表示了兴趣,目前正在围绕即将到来的scala反思进行大量工作。
令人怀疑的是,我们会看到类似于您提出的语法的内容。方法不是第一类构造,因此只能通过它们的包含类来引用。但是我们将通过反射获得一个很好的scala友好方式来访问成员,包括默认参数,参数名称等。
答案 1 :(得分:2)
我不记得在哪里,但我最近偶然发现了一个Java库,它将Java类作为输入并生成一个元类,可以说,有静态字段(我认为)是对所有字段的引用和目标类的方法。它肯定不如你所期待的那样优雅,但它让我感到极具刺激性。