static

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;
    }