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