1 52 53 package com.go.trove.classfile; 54 55 import java.io.*; 56 57 65 public class ConstantInterfaceMethodInfo extends ConstantInfo { 66 private ConstantClassInfo mParentClass; 67 private ConstantNameAndTypeInfo mNameAndType; 68 69 75 static ConstantInterfaceMethodInfo make 76 (ConstantPool cp, 77 ConstantClassInfo parentClass, 78 ConstantNameAndTypeInfo nameAndType) { 79 80 ConstantInfo ci = 81 new ConstantInterfaceMethodInfo(parentClass, nameAndType); 82 return (ConstantInterfaceMethodInfo)cp.addConstant(ci); 83 } 84 85 ConstantInterfaceMethodInfo(ConstantClassInfo parentClass, 86 ConstantNameAndTypeInfo nameAndType) { 87 super(TAG_INTERFACE_METHOD); 88 89 mParentClass = parentClass; 90 mNameAndType = nameAndType; 91 } 92 93 public ConstantClassInfo getParentClass() { 94 return mParentClass; 95 } 96 97 public ConstantNameAndTypeInfo getNameAndType() { 98 return mNameAndType; 99 } 100 101 public int hashCode() { 102 return mNameAndType.hashCode(); 103 } 104 105 public boolean equals(Object obj) { 106 if (obj instanceof ConstantInterfaceMethodInfo) { 107 ConstantInterfaceMethodInfo other = 108 (ConstantInterfaceMethodInfo)obj; 109 return (mParentClass.equals(other.mParentClass) && 110 mNameAndType.equals(other.mNameAndType)); 111 } 112 113 return false; 114 } 115 116 public void writeTo(DataOutput dout) throws IOException { 117 super.writeTo(dout); 118 dout.writeShort(mParentClass.getIndex()); 119 dout.writeShort(mNameAndType.getIndex()); 120 } 121 122 public String toString() { 123 StringBuffer buf = 124 new StringBuffer ("CONSTANT_InterfaceMethodref_info: "); 125 126 ConstantClassInfo parent = getParentClass(); 127 128 buf.append(parent.getClassName()); 129 for (int i = parent.getDimensions(); i > 0; i--) { 130 buf.append('['); 131 buf.append(']'); 132 } 133 134 ConstantNameAndTypeInfo cnati = getNameAndType(); 135 136 buf.append(' '); 137 buf.append(cnati.getName()); 138 buf.append(' '); 139 buf.append(cnati.getType()); 140 141 return buf.toString(); 142 } 143 } 144 | Popular Tags |