FileDocCategorySizeDatePackage
Synthetic.javaAPI DocJava SE 6 API6219Tue Jun 10 00:22:18 BST 2008com.sun.org.apache.bcel.internal.classfile

Synthetic

public final class Synthetic extends Attribute
This class is derived from Attribute and declares this class as `synthetic', i.e., it needs special handling. The JVM specification states "A class member that does not appear in the source code must be marked using a Synthetic attribute." It may appear in the ClassFile attribute table, a field_info table or a method_info table. This class is intended to be instantiated from the Attribute.readAttribute() method.
version
$Id: Synthetic.java,v 1.1.2.1 2005/07/31 23:46:39 jeffsuttor Exp $
author
M. Dahm
see
Attribute

Fields Summary
private byte[]
bytes
Constructors Summary
public Synthetic(Synthetic c)
Initialize from another object. Note that both objects use the same references (shallow copy). Use copy() for a physical copy.

    this(c.getNameIndex(), c.getLength(), c.getBytes(), c.getConstantPool());
  
public Synthetic(int name_index, int length, byte[] bytes, ConstantPool constant_pool)

param
name_index Index in constant pool to CONSTANT_Utf8, which should represent the string "Synthetic".
param
length Content length in bytes - should be zero.
param
bytes Attribute contents
param
constant_pool The constant pool this attribute is associated with.

    super(Constants.ATTR_SYNTHETIC, name_index, length, constant_pool);
    this.bytes         = bytes;
  
Synthetic(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
Construct object from file stream.

param
name_index Index in constant pool to CONSTANT_Utf8
param
length Content length in bytes
param
file Input stream
param
constant_pool Array of constants
throws
IOException

    this(name_index, length, (byte [])null, constant_pool);

    if(length > 0) {
      bytes = new byte[length];
      file.readFully(bytes);
      System.err.println("Synthetic attribute with length > 0");
    }
  
Methods Summary
public voidaccept(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.

param
v Visitor object

    v.visitSynthetic(this);
  
public com.sun.org.apache.bcel.internal.classfile.Attributecopy(com.sun.org.apache.bcel.internal.classfile.ConstantPool constant_pool)

return
deep copy of this attribute

    Synthetic c = (Synthetic)clone();

    if(bytes != null)
      c.bytes = (byte[])bytes.clone();

    c.constant_pool = constant_pool;
    return c;
  
public final voiddump(java.io.DataOutputStream file)
Dump source file attribute to file stream in binary format.

param
file Output file stream
throws
IOException

    super.dump(file);
    if(length > 0)
      file.write(bytes, 0, length);
  
public final byte[]getBytes()

return
data bytes.

 return bytes; 
public final voidsetBytes(byte[] bytes)

param
bytes.

    this.bytes = bytes;
  
public final java.lang.StringtoString()

return
String representation.

    StringBuffer buf = new StringBuffer("Synthetic");

    if(length > 0)
      buf.append(" " + Utility.toHexString(bytes));

    return buf.toString();