2008-11-05 2 views
1

В BCEL я хотел бы инициализировать статические поля в статическом инициализаторе класса. Я не нашел способ сделать это, однако ... любые намеки?Статические инициализаторы в 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 

который, конечно, не то же самое.

ответ

2

Просто нашел это сам.

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

clinit, кажется, класс инициализатор ...

Смежные вопросы