Class ClassFileWriter.MethodWriter

  • Enclosing class:
    ClassFileWriter

    public static final class ClassFileWriter.MethodWriter
    extends Object
    Method.
    • Field Detail

      • output

        protected javassist.bytecode.ByteStream output
      • codeIndex

        protected int codeIndex
      • throwsIndex

        protected int throwsIndex
      • stackIndex

        protected int stackIndex
    • Method Detail

      • begin

        public void begin​(int accessFlags,
                          String name,
                          String descriptor,
                          String[] exceptions,
                          ClassFileWriter.AttributeWriter aw)
        Starts Adding a new method.
        Parameters:
        accessFlags - access flags.
        name - the method name.
        descriptor - the method signature.
        exceptions - throws clause. It may be null. The class names must be the JVM-internal representations like java/lang/Exception.
        aw - attributes to the Method_info.
      • begin

        public void begin​(int accessFlags,
                          int name,
                          int descriptor,
                          int[] exceptions,
                          ClassFileWriter.AttributeWriter aw)
        Starts adding a new method.
        Parameters:
        accessFlags - access flags.
        name - the method name. an index indicating its CONSTANT_Utf8_info.
        descriptor - the field type. an index indicating its CONSTANT_Utf8_info.
        exceptions - throws clause. indexes indicating CONSTANT_Class_infos. It may be null.
        aw - attributes to the Method_info.
      • add

        public void add​(int b)
        Appends an 8bit value of bytecode.
        See Also:
        Opcode
      • add16

        public void add16​(int b)
        Appends a 16bit value of bytecode.
      • add32

        public void add32​(int b)
        Appends a 32bit value of bytecode.
      • addInvoke

        public void addInvoke​(int opcode,
                              String targetClass,
                              String methodName,
                              String descriptor)
        Appends a invokevirtual, inovkespecial, or invokestatic bytecode.
        See Also:
        Opcode
      • codeEnd

        public void codeEnd​(int maxStack,
                            int maxLocals)
        Ends appending bytecode.
      • addCatch

        public void addCatch​(int startPc,
                             int endPc,
                             int handlerPc,
                             int catchType)
        Appends an exception_table entry to the Code_attribute. This method is available only after the codeEnd method is called.
        Parameters:
        catchType - an index indicating a CONSTANT_Class_info.
      • end

        public void end​(StackMapTable.Writer smap,
                        ClassFileWriter.AttributeWriter aw)
        Ends adding a new method. The add method must be called before the end method is called.
        Parameters:
        smap - a stack map table. may be null.
        aw - attributes to the Code_attribute. may be null.
      • size

        public int size()
        Returns the length of the bytecode that has been added so far.
        Returns:
        the length in bytes.
        Since:
        3.19