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  }