Unknownpublic final class Unknown extends Attribute This class represents a reference to an unknown (i.e.,
application-specific) attribute of a class. It is instantiated
from the Attribute.readAttribute() method. |
Fields Summary |
---|
private byte[] | bytes | private String | name | private static HashMap | unknown_attributes |
Constructors Summary |
---|
public Unknown(Unknown c)Initialize from another object. Note that both objects use the same
references (shallow copy). Use clone() for a physical copy.
this(c.getNameIndex(), c.getLength(), c.getBytes(), c.getConstantPool());
| public Unknown(int name_index, int length, byte[] bytes, ConstantPool constant_pool)Create a non-standard attribute.
super(Constants.ATTR_UNKNOWN, name_index, length, constant_pool);
this.bytes = bytes;
name = ((ConstantUtf8)constant_pool.getConstant(name_index,
Constants.CONSTANT_Utf8)).getBytes();
unknown_attributes.put(name, this);
| Unknown(int name_index, int length, DataInputStream file, ConstantPool constant_pool)Construct object from file stream.
this(name_index, length, (byte [])null, constant_pool);
if(length > 0) {
bytes = new byte[length];
file.readFully(bytes);
}
|
Methods Summary |
---|
public void | accept(com.sun.org.apache.bcel.internal.classfile.Visitor v)Called by objects that are traversing the nodes of the tree implicitely
defined by the contents of a Java class. I.e., the hierarchy of methods,
fields, attributes, etc. spawns a tree of objects.
v.visitUnknown(this);
| public com.sun.org.apache.bcel.internal.classfile.Attribute | copy(com.sun.org.apache.bcel.internal.classfile.ConstantPool constant_pool)
Unknown c = (Unknown)clone();
if(bytes != null)
c.bytes = (byte[])bytes.clone();
c.constant_pool = constant_pool;
return c;
| public final void | dump(java.io.DataOutputStream file)Dump unknown bytes to file stream.
super.dump(file);
if(length > 0)
file.write(bytes, 0, length);
| public final byte[] | getBytes() return bytes;
| public final java.lang.String | getName() return name;
| static com.sun.org.apache.bcel.internal.classfile.Unknown[] | getUnknownAttributes()
Unknown[] unknowns = new Unknown[unknown_attributes.size()];
Iterator entries = unknown_attributes.values().iterator();
for(int i=0; entries.hasNext(); i++)
unknowns[i] = (Unknown)entries.next();
unknown_attributes.clear();
return unknowns;
| public final void | setBytes(byte[] bytes)
this.bytes = bytes;
| public final java.lang.String | toString()
if(length == 0 || bytes == null)
return "(Unknown attribute " + name + ")";
String hex;
if(length > 10) {
byte[] tmp = new byte[10];
System.arraycopy(bytes, 0, tmp, 0, 10);
hex = Utility.toHexString(tmp) + "... (truncated)";
}
else
hex = Utility.toHexString(bytes);
return "(Unknown attribute " + name + ": " + hex + ")";
|
|