Author: dbrosius
Date: Fri Jun 10 17:47:39 2005
New Revision: 190050
URL: http://svn.apache.org/viewcvs?rev=190050&view=rev
Log:
For FieldOrMethod.getClassName changed to support java5.0 for old clients.
thanks Dave Hovemeyer
* @deprecated If the instruction references an array class,
* this method will return "java.lang.Object".
* For code generated by Java 1.5, this answer is
* sometimes wrong (e.g., if the "clone()" method is
* called on an array). A better idea is to use
* the getReferenceType() method, which correctly distinguishes
* between class types and array types.
Modified:
jakarta/bcel/trunk/src/java/org/apache/bcel/generic/FieldOrMethod.java
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/generic/FieldOrMethod.java
URL:
http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/generic/FieldOrMethod.java?rev=190050&r1=190049&r2=190050&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/generic/FieldOrMethod.java
(original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/generic/FieldOrMethod.java Fri
Jun 10 17:47:39 2005
@@ -62,11 +62,23 @@
}
/** @return name of the referenced class/interface
+ * @deprecated If the instruction references an array class,
+ * this method will return "java.lang.Object".
+ * For code generated by Java 1.5, this answer is
+ * sometimes wrong (e.g., if the "clone()" method is
+ * called on an array). A better idea is to use
+ * the getReferenceType() method, which correctly distinguishes
+ * between class types and array types.
*/
public String getClassName(ConstantPoolGen cpg) {
ConstantPool cp = cpg.getConstantPool();
ConstantCP cmr = (ConstantCP)cp.getConstant(index);
- return cp.getConstantString(cmr.getClassIndex(),
org.apache.bcel.Constants.CONSTANT_Class).replace('/', '.');
+ String className = cp.getConstantString(cmr.getClassIndex(),
org.apache.bcel.Constants.CONSTANT_Class);
+ if (className.startsWith("[")) {
+ // Turn array classes into java.lang.Object.
+ return "java.lang.Object";
+ }
+ return className.replace('/', '.');
}
/** @return type of the referenced class/interface
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]