They always said "
String is immutable - you cannot change its value without changing reference!"But what They will say when I will use this code?
import java.lang.reflect.Field;
public class StringModificator { 
 public static void trueModificator(String str) 
   throws Exception {  
  Field valueField = str.getClass().getDeclaredField("value");
  valueField.setAccessible(true);
  char[] value = (char[])valueField.get(str); 
  char[] reversed = new char[value.length];
  for (int idx=0; idx<value.length; idx++) {
   reversed[idx]=value[value.length-idx-1];
  }
  for (int idx=0; idx<value.length; idx++) {
   value[idx]=reversed[idx];
  }  
 }
 
 public static void falseModificator(String str) {
  str="toster";
 }
 
 public static void main(String[] args) throws Exception {
  String str = "it's a test";
  String subStr = str.substring(3);
  // prints "it's a test"
  System.out.println(str);
  System.out.println(subStr);
  
  falseModificator(str);
  // Still prints "it's a test"
  System.out.println(str);
  System.out.println(subStr);
  
  trueModificator(str);
  // But whats now? ;-)
  System.out.println(str);
  System.out.println(subStr);
 }
}So this whole
String isn't so immutable as They said!!!/mad scientist mode off
Similar postsbeta
Abuse of Booleans ;-)
How many i 1+1 in Java? ;-)
How to create valid file name?
Recursion is evil ;-)
How to get negative number from size() in LinkedList in Java? ;-)
 
No comments:
Post a Comment