2008-11-05 23 views
1

Dans BCEL, je voudrais initialiser des champs statiques dans l'initialiseur statique d'une classe. Je n'ai pas trouvé un moyen de le faire cependant ... des conseils?Initialisateurs statiques dans bcel

je besoin de quelque chose comme:

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

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

Je ne semble toutefois être en mesure de générer (avec MethodGen) des choses comme:

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

Ce qui est bien sûr pas la même chose.

Répondre

2

Je l'ai trouvé moi-même.

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

clinit semble être la initialiseur de classe ...