package uk.kludje.experimental.property.reflect;
import java.io.DataOutput;
import java.io.IOException;
enum ClassConstantType implements DataWriter {
CLASS(7) ,
FIELDREF(9),
METHODREF(10),
INTERFACEMETHODREF(11),
STRING(8),
INTEGER(3),
FLOAT(4),
LONG(5),
DOUBLE(6),
NAMEANDTYPE(12),
UTF8(1),
METHODHANDLE(15),
METHODTYPE(16),
INVOKEDYNAMIC(18);
public final int tag;
ClassConstantType(int val) {
this.tag = val;
}
@Override
public void writeTo(DataOutput output) throws IOException {
output.writeByte(tag);
}
public static ClassConstantType fromTag(int tag) {
for (ClassConstantType type : values()) {
if (type.tag == tag) {
return type;
}
}
throw new IllegalArgumentException("Unknown constant tag: " + tag);
}
}