bugfix> java-bytecode-asm > 投稿

asm で、クラスのスーパークラスを動的に変更して、スーパークラスとして別のクラスを指す方法または javassist

クラスのメソッドとフィールドを変更する方法を知っています。

回答 1 件
  • setSuperclass を見てください 。以下に小さな例を示します。

    CtClass c = pool.getCtClass("com.my.class.A"); 
    c.setSuperclass(pool.getCtClass("com.my.class.B"));
    
    

    このメソッドのドキュメントは次のとおりです。

    public void setSuperclass​(CtClass clazz) throws CannotCompileException

    Changes a super class unless this object represents an interface. The new super class must be compatible with the old one; for example, it should inherit from the old super class.

    If this object represents an interface, this method is equivalent to addInterface(); it appends clazz to the list of the super interfaces extended by that interface. Note that an interface can extend multiple super interfaces.

あなたの答え