I wrote a small test program and found out String.getDeclaredFields() does not contain its field private char byte[]. I guess JVM hides it from reflection for protection.