1

在 BCEL 中,我想在类的静态初始化程序中初始化静态字段。但是,我还没有找到这样做的方法……有什么提示吗?

我需要类似的东西:

// Field descriptor #8 [I
private static int[] a;

static {};
     0  bipush 10
     2  multianewarray int[] [9]
     6  putstatic Output.a : int[] [11]
     9  return

然而,我似乎只能生成(使用MethodGen)类似的东西:

public static void {}();
   0  bipush 10
   2  multianewarray int[] [9]
   6  putstatic Output.a : int[] [11]
   9  return

这当然不一样。

4

1 回答 1

2

我自己才发现的。

    MethodGen method = new MethodGen(Constants.ACC_STATIC,
            Type.VOID,
            new Type[] { }, new String[] { }, "<clinit>",
            cg.getClassName(), il, cg.getConstantPool());

clinit 似乎是类初始化程序...

于 2008-11-05T01:34:29.033 回答