Methods Summary |
---|
private int | addConstant()
switch(type.getType()) {
case Constants.T_INT: case Constants.T_CHAR: case Constants.T_BYTE:
case Constants.T_BOOLEAN: case Constants.T_SHORT:
return cp.addInteger(((Integer)value).intValue());
case Constants.T_FLOAT:
return cp.addFloat(((Float)value).floatValue());
case Constants.T_DOUBLE:
return cp.addDouble(((Double)value).doubleValue());
case Constants.T_LONG:
return cp.addLong(((Long)value).longValue());
case Constants.T_REFERENCE:
return cp.addString(((String)value));
default:
throw new RuntimeException("Oops: Unhandled : " + type.getType());
}
|
public void | addObserver(com.sun.org.apache.bcel.internal.generic.FieldObserver o)Add observer for this object.
if(observers == null)
observers = new ArrayList();
observers.add(o);
|
public void | cancelInitValue()Remove any initial value.
value = null;
|
private void | checkType(com.sun.org.apache.bcel.internal.generic.Type atype)
if(type == null)
throw new ClassGenException("You haven't defined the type of the field yet");
if(!isFinal())
throw new ClassGenException("Only final fields may have an initial value!");
if(!type.equals(atype))
throw new ClassGenException("Types are not compatible: " + type + " vs. " + atype);
|
public com.sun.org.apache.bcel.internal.generic.FieldGen | copy(com.sun.org.apache.bcel.internal.generic.ConstantPoolGen cp)
FieldGen fg = (FieldGen)clone();
fg.setConstantPool(cp);
return fg;
|
public com.sun.org.apache.bcel.internal.classfile.Field | getField()Get field object after having set up all necessary values.
String signature = getSignature();
int name_index = cp.addUtf8(name);
int signature_index = cp.addUtf8(signature);
if(value != null) {
checkType(type);
int index = addConstant();
addAttribute(new ConstantValue(cp.addUtf8("ConstantValue"),
2, index, cp.getConstantPool()));
}
return new Field(access_flags, name_index, signature_index, getAttributes(),
cp.getConstantPool());
|
public java.lang.String | getInitValue()
if(value != null) {
return value.toString();
} else
return null;
|
public java.lang.String | getSignature() return type.getSignature();
|
public void | removeObserver(com.sun.org.apache.bcel.internal.generic.FieldObserver o)Remove observer for this object.
if(observers != null)
observers.remove(o);
|
public void | setInitValue(boolean b)
checkType(Type.BOOLEAN);
if(b)
value = new Integer(1);
|
public void | setInitValue(float f)
checkType(Type.FLOAT);
if(f != 0.0)
value = new Float(f);
|
public void | setInitValue(double d)
checkType(Type.DOUBLE);
if(d != 0.0)
value = new Double(d);
|
public void | setInitValue(java.lang.String str)Set (optional) initial value of field, otherwise it will be set to null/0/false
by the JVM automatically.
checkType(new ObjectType("java.lang.String"));
if(str != null)
value = str;
|
public void | setInitValue(long l)
checkType(Type.LONG);
if(l != 0L)
value = new Long(l);
|
public void | setInitValue(int i)
checkType(Type.INT);
if(i != 0)
value = new Integer(i);
|
public void | setInitValue(short s)
checkType(Type.SHORT);
if(s != 0)
value = new Integer(s);
|
public void | setInitValue(char c)
checkType(Type.CHAR);
if(c != 0)
value = new Integer(c);
|
public void | setInitValue(byte b)
checkType(Type.BYTE);
if(b != 0)
value = new Integer(b);
|
private void | setValue(int index)
ConstantPool cp = this.cp.getConstantPool();
Constant c = cp.getConstant(index);
value = ((ConstantObject)c).getConstantValue(cp);
|
public final java.lang.String | toString()Return string representation close to declaration format,
`public static final short MAX = 100', e.g..
String name, signature, access; // Short cuts to constant pool
access = Utility.accessToString(access_flags);
access = access.equals("")? "" : (access + " ");
signature = type.toString();
name = getName();
StringBuffer buf = new StringBuffer(access + signature + " " + name);
String value = getInitValue();
if(value != null)
buf.append(" = " + value);
return buf.toString();
|
public void | update()Call notify() method on all observers. This method is not called
automatically whenever the state has changed, but has to be
called by the user after he has finished editing the object.
if(observers != null)
for(Iterator e = observers.iterator(); e.hasNext(); )
((FieldObserver)e.next()).notify(this);
|