in ch-commons-charset/src/main/java/com/cloudhopper/commons/charset/CharSequenceAccessor.java [46:87]
static {
Constructor<String> stringConstructorTemp = null;
Field stringValueFieldTemp = null, stringOffsetFieldTemp = null, stringCountFieldTemp = null;
Field stringBuilderValueFieldTemp = null, stringBuilderCountFieldTemp = null;
boolean hasStringFieldsTemp = false, hasStringBuilderFieldsTemp = false;
try {
stringValueFieldTemp = String.class.getDeclaredField("value");
stringValueFieldTemp.setAccessible(true);
stringOffsetFieldTemp = String.class.getDeclaredField("offset");
stringOffsetFieldTemp.setAccessible(true);
stringCountFieldTemp = String.class.getDeclaredField("count");
stringCountFieldTemp.setAccessible(true);
hasStringFieldsTemp = true;
stringConstructorTemp = String.class.getDeclaredConstructor(int.class, int.class, char[].class);
} catch (Throwable t) {
// do nothing -- these optimizations just won't be used
//throw new RuntimeException("Unable to get [count] field from String.class", t);
}
try {
// string builder defines value[] in its parent class
stringBuilderValueFieldTemp = StringBuilder.class.getSuperclass().getDeclaredField("value");
stringBuilderValueFieldTemp.setAccessible(true);
// string builder defines value[] in its parent class
stringBuilderCountFieldTemp = StringBuilder.class.getSuperclass().getDeclaredField("count");
stringBuilderCountFieldTemp.setAccessible(true);
hasStringBuilderFieldsTemp = true;
} catch (Throwable t) {
// do nothing -- these optimizations just won't be used
//throw new RuntimeException("Unable to get [count] field from StringBuilder.class", t);
}
stringValueField = stringValueFieldTemp;
stringOffsetField = stringOffsetFieldTemp;
stringCountField = stringCountFieldTemp;
hasStringFields = hasStringFieldsTemp;
stringConstructor = stringConstructorTemp;
stringBuilderValueField = stringBuilderValueFieldTemp;
stringBuilderCountField = stringBuilderCountFieldTemp;
hasStringBuilderFields = hasStringBuilderFieldsTemp;
}