有谁知道这个类$ ...或类$()在Java中是什么意思?

时间:2018-01-31 14:19:33

标签: java

我正在重构一些代码,但我遇到了以下情况:

class$com$companyname$paymentservice$utility$TheClass == null ?
                    (class$com$companyname$common$crypto$TheClass = class$("com.companyname.common.crypto.TheClass")) : class$com$companyname$common$crypto$TheClass)

虽然我知道三元运算符应该做什么,但我从来没有见过像这样的类的定义或调用这样的方法。有没有人知道这个class$甚至是$在Java中的用途是什么?

1 个答案:

答案 0 :(得分:0)

我猜这个班级是由RetroWeaver生成的。

它在已处理的类中生成一个名为class$的方法,该方法委派给真正的Class.forName方法,并用SomeClass.class替换所有class$("SomeClass")

这些不完全相加的部分:

  1. 我从来没有理解它在反编译输出中是如何工作的,因为当类被反编译时,我从未在输出中看到过这样的方法。
  2. 你说你正在查看.java文件,所以实际的class$()方法必须在某处才能编译它,但是,RetroWeaver只适用于类文件,所以它意味着有人通过RetroWeaver处理代码然后反编译它以产生他们的源代码,这似乎是一件奇怪的事情。