-
Bug
-
Resolution: Not an Issue
-
P4
-
None
-
5.0
-
x86
-
windows_xp
Name: gm110360 Date: 06/14/2004
FULL PRODUCT VERSION :
java version "1.5.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b32c)
Java HotSpot(TM) Client VM (build 1.5.0-beta-b32c, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [Version 5.1.2600]
A DESCRIPTION OF THE PROBLEM :
In API Specification 1.5
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html#getDeclaredMethods()
> Returns an array of Method objects reflecting all the methods declared by the class or interface represented by this Class object.
> This includes public, protected, default (package) access, and private methods, but excludes inherited methods.
However, current implementation was against specification. not excludes inherited methods.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
exec following source code.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
inconsecutive
public synchronized int java.lang.StringBuffer.length()
public synchronized int java.lang.StringBuffer.capacity()
public synchronized void java.lang.StringBuffer.ensureCapacity(int)
public synchronized void java.lang.StringBuffer.trimToSize()
public synchronized void java.lang.StringBuffer.setLength(int)
public synchronized char java.lang.StringBuffer.charAt(int)
public synchronized int java.lang.StringBuffer.codePointAt(int)
public synchronized int java.lang.StringBuffer.codePointBefore(int)
public synchronized void java.lang.StringBuffer.getChars(int,int,char[],int)
public synchronized void java.lang.StringBuffer.setCharAt(int,char)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.String)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.Object)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.StringBuffer)
public java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.CharSequence)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.CharSequence,int,int)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(char[])
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(char[],int,int)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(boolean)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(char)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(int)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.appendCodePoint(int)
static int java.lang.StringBuffer.stringSizeOfInt(int)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(long)
static int java.lang.StringBuffer.stringSizeOfLong(long)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(float)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(double)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.delete(int,int)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.deleteCharAt(int)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.replace(int,int,java.lang.String)
public synchronized java.lang.String java.lang.StringBuffer.substring(int)
public synchronized java.lang.CharSequence java.lang.StringBuffer.subSequence(int,int)
public synchronized java.lang.String java.lang.StringBuffer.substring(int,int)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.insert(int,char[],int,int)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.insert(int,java.lang.Object)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.insert(int,java.lang.String)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.insert(int,char[])
public java.lang.StringBuffer java.lang.StringBuffer.insert(int,java.lang.CharSequence)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.insert(int,java.lang.CharSequence,int,int)
public java.lang.StringBuffer java.lang.StringBuffer.insert(int,boolean)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.insert(int,char)
public java.lang.StringBuffer java.lang.StringBuffer.insert(int,int)
public java.lang.StringBuffer java.lang.StringBuffer.insert(int,long)
public java.lang.StringBuffer java.lang.StringBuffer.insert(int,float)
public java.lang.StringBuffer java.lang.StringBuffer.insert(int,double)
public int java.lang.StringBuffer.indexOf(java.lang.String)
public synchronized int java.lang.StringBuffer.indexOf(java.lang.String,int)
public int java.lang.StringBuffer.lastIndexOf(java.lang.String)
public synchronized int java.lang.StringBuffer.lastIndexOf(java.lang.String,int)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.reverse()
public synchronized java.lang.String java.lang.StringBuffer.toString()
private synchronized void java.lang.StringBuffer.writeObject(java.io.ObjectOutputStream) throws java.io.IOException
private void java.lang.StringBuffer.readObject(java.io.ObjectInputStream) throws java.io.IOException,java.lang.ClassNotFoundException
ACTUAL -
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.append(java.lang.CharSequence,int,int)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.append(char[])
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.append(char[],int,int)
public volatile java.lang.Appendable java.lang.StringBuffer.append(java.lang.CharSequence) throws java.io.IOException
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.append(java.lang.StringBuffer)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.append(java.lang.CharSequence)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.append(double)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.append(float)
public volatile java.lang.Appendable java.lang.StringBuffer.append(char) throws java.io.IOException
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.Object)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.String)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.StringBuffer)
public java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.CharSequence)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.CharSequence,int,int)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(char[])
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(char[],int,int)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(boolean)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(char)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(int)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.append(boolean)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.append(java.lang.Object)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(long)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.append(java.lang.String)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(float)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(double)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.append(char)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.append(int)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.append(long)
public synchronized java.lang.String java.lang.StringBuffer.toString()
public synchronized char java.lang.StringBuffer.charAt(int)
public synchronized int java.lang.StringBuffer.codePointAt(int)
public synchronized int java.lang.StringBuffer.codePointBefore(int)
public synchronized void java.lang.StringBuffer.getChars(int,int,char[],int)
public synchronized int java.lang.StringBuffer.indexOf(java.lang.String,int)
public int java.lang.StringBuffer.indexOf(java.lang.String)
public synchronized int java.lang.StringBuffer.lastIndexOf(java.lang.String,int)
public int java.lang.StringBuffer.lastIndexOf(java.lang.String)
public synchronized int java.lang.StringBuffer.length()
public synchronized java.lang.StringBuffer java.lang.StringBuffer.replace(int,int,java.lang.String)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.replace(int,int,java.lang.String)
public synchronized java.lang.CharSequence java.lang.StringBuffer.subSequence(int,int)
public synchronized java.lang.String java.lang.StringBuffer.substring(int)
public synchronized java.lang.String java.lang.StringBuffer.substring(int,int)
private synchronized void java.lang.StringBuffer.writeObject(java.io.ObjectOutputStream) throws java.io.IOException
private void java.lang.StringBuffer.readObject(java.io.ObjectInputStream) throws java.io.IOException,java.lang.ClassNotFoundException
public synchronized int java.lang.StringBuffer.capacity()
public synchronized void java.lang.StringBuffer.ensureCapacity(int)
public synchronized void java.lang.StringBuffer.trimToSize()
public synchronized java.lang.StringBuffer java.lang.StringBuffer.appendCodePoint(int)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.appendCodePoint(int)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.delete(int,int)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.delete(int,int)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.deleteCharAt(int)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.deleteCharAt(int)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.insert(int,long)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.insert(int,int)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.insert(int,char)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.insert(int,boolean)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.insert(int,java.lang.CharSequence,int,int)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.insert(int,float)
public java.lang.StringBuffer java.lang.StringBuffer.insert(int,java.lang.CharSequence)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.insert(int,java.lang.String)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.insert(int,java.lang.Object)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.insert(int,char[],int,int)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.insert(int,char[])
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.insert(int,java.lang.CharSequence)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.insert(int,java.lang.CharSequence,int,int)
public java.lang.StringBuffer java.lang.StringBuffer.insert(int,boolean)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.insert(int,java.lang.String)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.insert(int,java.lang.Object)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.insert(int,char[],int,int)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.insert(int,double)
public java.lang.StringBuffer java.lang.StringBuffer.insert(int,float)
public java.lang.StringBuffer java.lang.StringBuffer.insert(int,long)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.insert(int,char[])
public java.lang.StringBuffer java.lang.StringBuffer.insert(int,double)
public synchronized java.lang.StringBuffer java.lang.StringBuffer.insert(int,char)
public java.lang.StringBuffer java.lang.StringBuffer.insert(int,int)
public volatile java.lang.AbstractStringBuilder java.lang.StringBuffer.reverse()
public synchronized java.lang.StringBuffer java.lang.StringBuffer.reverse()
public synchronized void java.lang.StringBuffer.setCharAt(int,char)
public synchronized void java.lang.StringBuffer.setLength(int)
static int java.lang.StringBuffer.stringSizeOfInt(int)
static int java.lang.StringBuffer.stringSizeOfLong(long)
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
Method[] methods = StringBuffer.class.getDeclaredMethods();
for( int i = 0 ; i < methods.length ; i++ ){
System.out.println(methods[i]);
}
---------- END SOURCE ----------
(Incident Review ID: 270846)
======================================================================
- relates to
-
JDK-5064052 unnecessary bridge methods interfere with some generics retrofitting
-
- Resolved
-