/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.dcd.graph;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import net.sourceforge.pmd.dcd.ClassLoaderUtil;
/**
* Represents a Class Field in a UsageGraph.
*/
@SuppressWarnings("PMD.OverrideBothEqualsAndHashcode")
public class FieldNode extends MemberNode<FieldNode, Field> {
private WeakReference<Field> fieldReference;
public FieldNode(ClassNode classNode, String name, String desc) {
super(classNode, name, desc);
getMember();
}
@Override
public Field getMember() {
Field field = fieldReference == null ? null : fieldReference.get();
if (field == null) {
field = ClassLoaderUtil.getField(getClassNode().getType(), name);
this.fieldReference = new WeakReference<>(field);
}
return field;
}
@Override
public int compareTo(FieldNode that) {
return this.name.compareTo(that.name);
}
@Override
public boolean equals(Object obj) {
if (obj instanceof FieldNode) {
FieldNode that = (FieldNode) obj;
return super.equals(that);
}
return false;
}
/* (non-Javadoc)
* @see net.sourceforge.pmd.dcd.graph.MemberNode#hashCode()
*/
@Override
public int hashCode() {
return super.hashCode();
}
}