是否可以将“method / field”文字与Java / Scala中的类文字进行比较?

时间:2011-09-13 23:30:08

标签: java class scala reflection language-design

Java的Foo.class以及Scala的classOf[Foo]文字类语法返回有关该类的反射视图。

是否有可能提供类似.method/.fieldmethodOf[] / fieldOf[]的内容以获得对方法和字段的可比较的反思性访问?

如何在Java / Scala中实现这样的东西?

在Java的情况下,我会假设这需要语言更改(非常不可能)或者使用字节码工具/ AspectJ进行一些操作,而在Scala中,可能需要使用隐式转换来实现它。

2 个答案:

答案 0 :(得分:8)

是和否。 Paul Phillips肯定对此类事情表示了兴趣,目前正在围绕即将到来的scala反思进行大量工作。

令人怀疑的是,我们会看到类似于您提出的语法的内容。方法不是第一类构造,因此只能通过它们的包含类来引用。但是我们通过反射获得一个很好的scala友好方式来访问成员,包括默认参数,参数名称等。

答案 1 :(得分:2)

我不记得在哪里,但我最近偶然发现了一个Java库,它将Java类作为输入并生成一个元类,可以说,有静态字段(我认为)是对所有字段的引用和目标类的方法。它肯定不如你所期待的那样优雅,但它让我感到极具刺激性。