@Override public boolean equals(Object obj) { if (super.equals(obj)) { return true; } if (!(obj instanceof Value)) { return false; } Value objval = (Value) obj; IClass curtyp = getResultType(); IClass objtyp = objval.getResultType(); if (value == null && objval.value == null) { if (curtyp.isChildOrEqual(objtyp) || objtyp.isChildOrEqual(curtyp)) { return true; } else if (Modifier.isAbstract(curtyp.getModifiers()) && Modifier.isFinal(objtyp.getModifiers())) { return false; } else { return !((Modifier.isAbstract(objtyp.getModifiers()) && Modifier.isFinal(curtyp.getModifiers()))); } } else if (value == null && objval.value != null || objval.value == null && value != null) { return false; } else { return value.equals(objval); } }
/** * * @param elementType * @param dim */ public ArrayClass(IClass elementType, int dim, ASMSupportClassLoader classLoader) { super(classLoader); version = elementType.getVersion(); mod = elementType.getModifiers(); superClass = classLoader.getType(Object.class); interfaces = new IClass[]{classLoader.getType(Cloneable.class), classLoader.getType(Serializable.class)}; this.elementType = elementType; this.dim = dim; StringBuilder descsb = new StringBuilder(); int tmpDim = dim; while(tmpDim>0){ descsb.append("["); tmpDim--; } descsb.append(elementType.getDescription()); desc = descsb.toString(); name = desc; }