View Javadoc

    1   /**
    2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
    3    */
    4   package net.sourceforge.pmd.dcd.graph;
    5
    6   import java.lang.ref.WeakReference;
    7   import java.lang.reflect.Field;
    8
    9   import net.sourceforge.pmd.dcd.ClassLoaderUtil;
    10
    11  /**
    12   * Represents a Class Field in a UsageGraph.
    13   */
    14  public class FieldNode extends MemberNode<FieldNode, Field> {
    15
    16  	private WeakReference<Field> fieldReference;
    17
    18  	public FieldNode(ClassNode classNode, String name, String desc) {
    19  		super(classNode, name, desc);
    20  		getMember();
    21  	}
    22
    23  	public Field getMember() {
    24  		Field field = fieldReference == null ? null : fieldReference.get();
    25  		if (field == null) {
    26  			field = ClassLoaderUtil.getField(getClassNode().getType(), name);
    27  			this.fieldReference = new WeakReference<Field>(field);
    28  		}
    29  		return field;
    30  	}
    31
    32  	public int compareTo(FieldNode that) {
    33  		return this.name.compareTo(that.name);
    34  	}
    35
    36  	public boolean equals(Object obj) {
    37  		if (obj instanceof FieldNode) {
    38  			FieldNode that = (FieldNode)obj;
    39  			return super.equals(that);
    40  		}
    41  		return false;
    42  	}
    43  }