public void setName(String name) { ctField.setName(name); typeInfo.clearFieldCache(); }
ClassPool classpool = ClassPool.getDefault(); CtClass ctClass = classpool.get(Class1.class.getName()); CtField field = ctClass.getField("strCompany"); CodeConverter codeConverter = new CodeConverter(); codeConverter.redirectFieldAccess(field, ctClass, "strCompany2"); ctClass.instrument(codeConverter); field.setName("strCompany2"); ctClass.writeFile("./injectedClasses");
+ fieldName + "\", " + e.ordinal() + ");"; CtField f2 = CtField.make(fieldSrc, newEnum); f2.setName(fieldName); newEnum.addField(f2);
newField.setName(newFieldName); newField.getFieldInfo().setAccessFlags(AccessFlag.PUBLIC);
private static void fixMember(CtMember member, boolean useReflection) { //Make member public if (useReflection) { member.setModifiers(Modifier.setPublic(member.getModifiers())); AnnotationUtil.annotateReflectionAccessor(member, null, null, null); } //Create a RW alias for final fields if (member instanceof CtField && Modifier.isFinal(member.getModifiers())) { try { CtField rwField = new CtField((CtField) member, member.getDeclaringClass()); rwField.setName(member.getName() + "_rw"); rwField.setModifiers(Modifier.setPublic(rwField.getModifiers()) & ~Modifier.FINAL); AnnotationUtil.annotateReflectionAccessor(rwField, member.getName(), null, null); member.getDeclaringClass().addField(rwField); } catch (CannotCompileException e) { System.err.println("Cannot add field '" + member.getName() + "_rw' to " + member.getDeclaringClass().getName()); } } }