我正在重构一些代码,并且遇到了以下问题:

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中使用的$吗?

最佳答案

我猜该类是由RetroWeaver生成的。

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

不太相加的位:


我从来不了解这在反编译输出中是如何工作的,因为当类被反编译时,我从未在输出中看到上述方法。
您说您正在看的是.java文件,因此实际的class$()方法必须完全可以编译,而且RetroWeaver仅适用于类文件,因此它暗示有人通过RetroWeaver处理了代码。然后将其反编译以生成其源代码,这似乎很奇怪。

09-30 14:41