Javassistのメモ

  • Javassistバイトコードを操作するもの
  • 細かな操作はExprEditorで行う。この時操作できるのは、以下の式だけ。これらは副作用を起こしうる式にほぼ相当する。言い換えると、副作用を起こさない int z = x + y のような式はExprEditorの対象にできない
    • MethodCall
    • ConstructorCall
    • FieldAccess
    • NewExpr
    • NewArray
    • Instanceof
    • Cast
  • Expr#replace(src) では、Java風の構文でコードを掛けるが、autoboxがなったり暗黙の型変換がなかったりする。たとえば、 void f(Object)f("str") で呼び出すことはできない。f((Object)"str") と型を正確に合わせないといけない

Javassistは便利だが、黒魔術なので基本的にはデバッグ用途で使うのがいいと思う。