View Javadoc

1   // jq_MemberReference.java, created Mon Feb  5 23:23:20 2001 by joewhaley
2   // Copyright (C) 2001-3 John Whaley <jwhaley@alum.mit.edu>
3   // Licensed under the terms of the GNU LGPL; see COPYING for details.
4   package joeq.Class;
5   
6   import joeq.UTF.Utf8;
7   
8   /***
9    * Objects of this class represent unresolved references to class members.
10   *
11   * @author  John Whaley <jwhaley@alum.mit.edu>
12   * @version $Id: jq_MemberReference.java 1456 2004-03-09 22:01:46Z jwhaley $
13   */
14  public final class jq_MemberReference {
15  
16      private jq_Class clazz;
17      private jq_NameAndDesc nd;
18      
19      /*** Creates new member reference to the named member in the given class.
20       * @param clazz  class of the referenced member
21       * @param nd  name and descriptor of the referenced member
22       */
23      public jq_MemberReference(jq_Class clazz, jq_NameAndDesc nd) {
24          this.clazz = clazz;
25          this.nd = nd;
26      }
27      
28      /*** Returns the class of the referenced member.
29       * @return  class of referenced member
30       */
31      public final jq_Class getReferencedClass() { return clazz; }
32      /*** Returns the name and descriptor of the referenced member.
33       * @return  name and descriptor of referenced member
34       */
35      public final jq_NameAndDesc getNameAndDesc() { return nd; }
36      /*** Returns the name of the referenced member.
37       * @return  name of referenced member
38       */
39      public final Utf8 getName() { return nd.getName(); }
40      /*** Returns the descriptor of the referenced member.
41       * @return  descriptor of referenced member
42       */
43      public final Utf8 getDesc() { return nd.getDesc(); }
44      
45      public boolean equals(Object o) { return equals((jq_MemberReference)o); }
46      public boolean equals(jq_MemberReference that) {
47          return this.clazz == that.clazz && this.nd.equals(that.nd);
48      }
49      public int hashCode() {
50          return clazz.hashCode() ^ nd.hashCode();
51      }
52  
53      public String toString() {
54          return "ref to "+clazz+"."+nd;
55      }
56  
57  }