protected void appendConstant()

in asm-util/src/main/java/org/objectweb/asm/util/ASMifier.java [1438:1546]


  protected void appendConstant(final Object value) {
    if (value == null) {
      stringBuilder.append("null");
    } else if (value instanceof String) {
      appendString(stringBuilder, (String) value);
    } else if (value instanceof Type) {
      stringBuilder.append("Type.getType(\"");
      stringBuilder.append(((Type) value).getDescriptor());
      stringBuilder.append("\")");
    } else if (value instanceof Handle) {
      stringBuilder.append("new Handle(");
      Handle handle = (Handle) value;
      stringBuilder.append("Opcodes.").append(HANDLE_TAG[handle.getTag()]).append(", \"");
      stringBuilder.append(handle.getOwner()).append(COMMA);
      stringBuilder.append(handle.getName()).append(COMMA);
      stringBuilder.append(handle.getDesc()).append("\", ");
      stringBuilder.append(handle.isInterface()).append(')');
    } else if (value instanceof ConstantDynamic) {
      stringBuilder.append("new ConstantDynamic(\"");
      ConstantDynamic constantDynamic = (ConstantDynamic) value;
      stringBuilder.append(constantDynamic.getName()).append(COMMA);
      stringBuilder.append(constantDynamic.getDescriptor()).append("\", ");
      appendConstant(constantDynamic.getBootstrapMethod());
      stringBuilder.append(NEW_OBJECT_ARRAY);
      int bootstrapMethodArgumentCount = constantDynamic.getBootstrapMethodArgumentCount();
      for (int i = 0; i < bootstrapMethodArgumentCount; ++i) {
        appendConstant(constantDynamic.getBootstrapMethodArgument(i));
        if (i != bootstrapMethodArgumentCount - 1) {
          stringBuilder.append(", ");
        }
      }
      stringBuilder.append("})");
    } else if (value instanceof Byte) {
      stringBuilder.append("new Byte((byte)").append(value).append(')');
    } else if (value instanceof Boolean) {
      stringBuilder.append(((Boolean) value).booleanValue() ? "Boolean.TRUE" : "Boolean.FALSE");
    } else if (value instanceof Short) {
      stringBuilder.append("new Short((short)").append(value).append(')');
    } else if (value instanceof Character) {
      stringBuilder
          .append("new Character((char)")
          .append((int) ((Character) value).charValue())
          .append(')');
    } else if (value instanceof Integer) {
      stringBuilder.append("new Integer(").append(value).append(')');
    } else if (value instanceof Float) {
      stringBuilder.append("new Float(\"").append(value).append("\")");
    } else if (value instanceof Long) {
      stringBuilder.append("new Long(").append(value).append("L)");
    } else if (value instanceof Double) {
      stringBuilder.append("new Double(\"").append(value).append("\")");
    } else if (value instanceof byte[]) {
      byte[] byteArray = (byte[]) value;
      stringBuilder.append("new byte[] {");
      for (int i = 0; i < byteArray.length; i++) {
        stringBuilder.append(i == 0 ? "" : ",").append(byteArray[i]);
      }
      stringBuilder.append('}');
    } else if (value instanceof boolean[]) {
      boolean[] booleanArray = (boolean[]) value;
      stringBuilder.append("new boolean[] {");
      for (int i = 0; i < booleanArray.length; i++) {
        stringBuilder.append(i == 0 ? "" : ",").append(booleanArray[i]);
      }
      stringBuilder.append('}');
    } else if (value instanceof short[]) {
      short[] shortArray = (short[]) value;
      stringBuilder.append("new short[] {");
      for (int i = 0; i < shortArray.length; i++) {
        stringBuilder.append(i == 0 ? "" : ",").append("(short)").append(shortArray[i]);
      }
      stringBuilder.append('}');
    } else if (value instanceof char[]) {
      char[] charArray = (char[]) value;
      stringBuilder.append("new char[] {");
      for (int i = 0; i < charArray.length; i++) {
        stringBuilder.append(i == 0 ? "" : ",").append("(char)").append((int) charArray[i]);
      }
      stringBuilder.append('}');
    } else if (value instanceof int[]) {
      int[] intArray = (int[]) value;
      stringBuilder.append("new int[] {");
      for (int i = 0; i < intArray.length; i++) {
        stringBuilder.append(i == 0 ? "" : ",").append(intArray[i]);
      }
      stringBuilder.append('}');
    } else if (value instanceof long[]) {
      long[] longArray = (long[]) value;
      stringBuilder.append("new long[] {");
      for (int i = 0; i < longArray.length; i++) {
        stringBuilder.append(i == 0 ? "" : ",").append(longArray[i]).append('L');
      }
      stringBuilder.append('}');
    } else if (value instanceof float[]) {
      float[] floatArray = (float[]) value;
      stringBuilder.append("new float[] {");
      for (int i = 0; i < floatArray.length; i++) {
        stringBuilder.append(i == 0 ? "" : ",").append(floatArray[i]).append('f');
      }
      stringBuilder.append('}');
    } else if (value instanceof double[]) {
      double[] doubleArray = (double[]) value;
      stringBuilder.append("new double[] {");
      for (int i = 0; i < doubleArray.length; i++) {
        stringBuilder.append(i == 0 ? "" : ",").append(doubleArray[i]).append('d');
      }
      stringBuilder.append('}');
    }
  }