Posted by:dejinzhao
Posted on:2006-11-05 08:10
修改了疏忽处
public class TestString {
public TestString() {
try{
Class firstClass = String.class;
java.lang.reflect.Field field=firstClass.getDeclaredField("count");
String myString=new String();
field.setAccessible(true);
field.setInt(myString,5);
System.out.println("myString.length()="+myString.length());//运行结果myString.length()=5
//System.out.println("myString="+myString);//现在调用该方法会发生如下异常
/**
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at java.lang.String.getChars(String.java:726)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:394)
at java.lang.StringBuilder.append(StringBuilder.java:120)
at TestString.(fff.java:10)
at TestString.main(fff.java:32)
*/
java.lang.reflect.Field newField=firstClass.getDeclaredField("value");
char[] ch={'t','h','i','s',' ','i','s',' ','s','t','r','i','n','g'};
newField.setAccessible(true);
newField.set(myString,ch);
field.setInt(myString,ch.length);
System.out.println(myString);
//运行后输出“this is string”
}catch(Exception e){
e.printStackTrace(System.out);
}
}
public static void main (String args[]) {
new TestString();
}
}