src/share/classes/jdk/internal/org/objectweb/asm/Handle.java

Print this page




  78     final int tag;
  79 
  80     /**
  81      * The internal name of the field or method designed by this handle.
  82      */
  83     final String owner;
  84 
  85     /**
  86      * The name of the field or method designated by this handle.
  87      */
  88     final String name;
  89 
  90     /**
  91      * The descriptor of the field or method designated by this handle.
  92      */
  93     final String desc;
  94 
  95     /**
  96      * Constructs a new field or method handle.
  97      *
  98      * @param tag the kind of field or method designated by this Handle. Must be

  99      *        {@link Opcodes#H_GETFIELD}, {@link Opcodes#H_GETSTATIC},
 100      *        {@link Opcodes#H_PUTFIELD}, {@link Opcodes#H_PUTSTATIC},
 101      *        {@link Opcodes#H_INVOKEVIRTUAL}, {@link Opcodes#H_INVOKESTATIC},

 102      *        {@link Opcodes#H_INVOKESPECIAL},
 103      *        {@link Opcodes#H_NEWINVOKESPECIAL} or
 104      *        {@link Opcodes#H_INVOKEINTERFACE}.
 105      * @param owner the internal name of the field or method designed by this

 106      *        handle.
 107      * @param name the name of the field or method designated by this handle.
 108      * @param desc the descriptor of the field or method designated by this


 109      *        handle.
 110      */
 111     public Handle(int tag, String owner, String name, String desc) {
 112         this.tag = tag;
 113         this.owner = owner;
 114         this.name = name;
 115         this.desc = desc;
 116     }
 117 
 118     /**
 119      * Returns the kind of field or method designated by this handle.
 120      *
 121      * @return {@link Opcodes#H_GETFIELD}, {@link Opcodes#H_GETSTATIC},
 122      *         {@link Opcodes#H_PUTFIELD}, {@link Opcodes#H_PUTSTATIC},
 123      *         {@link Opcodes#H_INVOKEVIRTUAL}, {@link Opcodes#H_INVOKESTATIC},
 124      *         {@link Opcodes#H_INVOKESPECIAL},
 125      *         {@link Opcodes#H_NEWINVOKESPECIAL} or
 126      *         {@link Opcodes#H_INVOKEINTERFACE}.
 127      */
 128     public int getTag() {
 129         return tag;
 130     }
 131 
 132     /**
 133      * Returns the internal name of the field or method designed by this
 134      * handle.
 135      *
 136      * @return the internal name of the field or method designed by this
 137      *         handle.
 138      */
 139     public String getOwner() {
 140         return owner;
 141     }
 142 
 143     /**
 144      * Returns the name of the field or method designated by this handle.
 145      *
 146      * @return the name of the field or method designated by this handle.
 147      */
 148     public String getName() {
 149         return name;
 150     }
 151 
 152     /**
 153      * Returns the descriptor of the field or method designated by this handle.
 154      *
 155      * @return the descriptor of the field or method designated by this handle.
 156      */
 157     public String getDesc() {
 158         return desc;
 159     }
 160 
 161     @Override
 162     public boolean equals(Object obj) {
 163         if (obj == this) {
 164             return true;
 165         }
 166         if (!(obj instanceof Handle)) {
 167             return false;
 168         }
 169         Handle h = (Handle) obj;
 170         return tag == h.tag && owner.equals(h.owner)
 171                 && name.equals(h.name) && desc.equals(h.desc);
 172     }
 173 
 174     @Override
 175     public int hashCode() {
 176         return tag + owner.hashCode() * name.hashCode() * desc.hashCode();
 177     }
 178 
 179     /**
 180      * Returns the textual representation of this handle. The textual
 181      * representation is: <pre>owner '.' name desc ' ' '(' tag ')'</pre>. As
 182      * this format is unambiguous, it can be parsed if necessary.





 183      */
 184     @Override
 185     public String toString() {
 186         return owner + '.' + name + desc + " (" + tag + ')';
 187     }
 188 }


  78     final int tag;
  79 
  80     /**
  81      * The internal name of the field or method designed by this handle.
  82      */
  83     final String owner;
  84 
  85     /**
  86      * The name of the field or method designated by this handle.
  87      */
  88     final String name;
  89 
  90     /**
  91      * The descriptor of the field or method designated by this handle.
  92      */
  93     final String desc;
  94 
  95     /**
  96      * Constructs a new field or method handle.
  97      *
  98      * @param tag
  99      *            the kind of field or method designated by this Handle. Must be
 100      *            {@link Opcodes#H_GETFIELD}, {@link Opcodes#H_GETSTATIC},
 101      *            {@link Opcodes#H_PUTFIELD}, {@link Opcodes#H_PUTSTATIC},
 102      *            {@link Opcodes#H_INVOKEVIRTUAL},
 103      *            {@link Opcodes#H_INVOKESTATIC},
 104      *            {@link Opcodes#H_INVOKESPECIAL},
 105      *            {@link Opcodes#H_NEWINVOKESPECIAL} or
 106      *            {@link Opcodes#H_INVOKEINTERFACE}.
 107      * @param owner
 108      *            the internal name of the field or method designed by this
 109      *            handle.
 110      * @param name
 111      *            the name of the field or method designated by this handle.
 112      * @param desc
 113      *            the descriptor of the field or method designated by this
 114      *            handle.
 115      */
 116     public Handle(int tag, String owner, String name, String desc) {
 117         this.tag = tag;
 118         this.owner = owner;
 119         this.name = name;
 120         this.desc = desc;
 121     }
 122 
 123     /**
 124      * Returns the kind of field or method designated by this handle.
 125      *
 126      * @return {@link Opcodes#H_GETFIELD}, {@link Opcodes#H_GETSTATIC},
 127      *         {@link Opcodes#H_PUTFIELD}, {@link Opcodes#H_PUTSTATIC},
 128      *         {@link Opcodes#H_INVOKEVIRTUAL}, {@link Opcodes#H_INVOKESTATIC},
 129      *         {@link Opcodes#H_INVOKESPECIAL},
 130      *         {@link Opcodes#H_NEWINVOKESPECIAL} or
 131      *         {@link Opcodes#H_INVOKEINTERFACE}.
 132      */
 133     public int getTag() {
 134         return tag;
 135     }
 136 
 137     /**
 138      * Returns the internal name of the field or method designed by this handle.

 139      *
 140      * @return the internal name of the field or method designed by this handle.

 141      */
 142     public String getOwner() {
 143         return owner;
 144     }
 145 
 146     /**
 147      * Returns the name of the field or method designated by this handle.
 148      *
 149      * @return the name of the field or method designated by this handle.
 150      */
 151     public String getName() {
 152         return name;
 153     }
 154 
 155     /**
 156      * Returns the descriptor of the field or method designated by this handle.
 157      *
 158      * @return the descriptor of the field or method designated by this handle.
 159      */
 160     public String getDesc() {
 161         return desc;
 162     }
 163 
 164     @Override
 165     public boolean equals(Object obj) {
 166         if (obj == this) {
 167             return true;
 168         }
 169         if (!(obj instanceof Handle)) {
 170             return false;
 171         }
 172         Handle h = (Handle) obj;
 173         return tag == h.tag && owner.equals(h.owner) && name.equals(h.name)
 174                 && desc.equals(h.desc);
 175     }
 176 
 177     @Override
 178     public int hashCode() {
 179         return tag + owner.hashCode() * name.hashCode() * desc.hashCode();
 180     }
 181 
 182     /**
 183      * Returns the textual representation of this handle. The textual
 184      * representation is:
 185      *
 186      * <pre>
 187      * owner '.' name desc ' ' '(' tag ')'
 188      * </pre>
 189      *
 190      * . As this format is unambiguous, it can be parsed if necessary.
 191      */
 192     @Override
 193     public String toString() {
 194         return owner + '.' + name + desc + " (" + tag + ')';
 195     }
 196 }