in src/main/java/org/apache/bcel/util/BCELFactory.java [81:120]
private void createConstant(final Object value) {
String embed = value.toString();
if (value instanceof String) {
embed = '"' + Utility.convertString(embed) + '"';
} else if (value instanceof Character) {
embed = "(char)0x" + Integer.toHexString(((Character) value).charValue());
} else if (value instanceof Float) {
final Float f = (Float) value;
if (Float.isNaN(f)) {
embed = "Float.NaN";
} else if (f == Float.POSITIVE_INFINITY) {
embed = "Float.POSITIVE_INFINITY";
} else if (f == Float.NEGATIVE_INFINITY) {
embed = "Float.NEGATIVE_INFINITY";
} else {
embed += "f";
}
} else if (value instanceof Double) {
final Double d = (Double) value;
if (Double.isNaN(d)) {
embed = "Double.NaN";
} else if (d == Double.POSITIVE_INFINITY) {
embed = "Double.POSITIVE_INFINITY";
} else if (d == Double.NEGATIVE_INFINITY) {
embed = "Double.NEGATIVE_INFINITY";
} else {
embed += "d";
}
} else if (value instanceof Long) {
embed += "L";
} else if (value instanceof ObjectType) {
final ObjectType ot = (ObjectType) value;
embed = "new ObjectType(\"" + ot.getClassName() + "\")";
} else if (value instanceof ArrayType) {
final ArrayType at = (ArrayType) value;
embed = "new ArrayType(" + BCELifier.printType(at.getBasicType()) + ", " + at.getDimensions() + ")";
}
printWriter.println("il.append(new PUSH(_cp, " + embed + "));");
}