private static Set<MethodInfo> getGetterMethodInfo(Class<?> clazz) {

        Set<MethodInfo> methodInfos = METHOD_MAP.get(clazz);

        if (methodInfos == null) {

            methodInfos = new HashSet<MethodInfo>();

            boolean includeSuperClass = clazz.getClassLoader() != null;

            Method[] methods = includeSuperClass ? clazz.getMethods() : clazz
                    .getDeclaredMethods();

            for (Method method : methods) {
                try {
                    if (Modifier.isPublic(method.getModifiers())) {
                        String name = method.getName();
                        String key = "";
                        if (name.startsWith("get")) {
                            if ("getClass".equals(name)
                                    || "getDeclaringClass".equals(name)) {
                                key = "";
                            } else {
                                key = name.substring(3);
                            }
                        } else if (name.startsWith("is")) {
                            key = name.substring(2);
                        }
                        if (key.length() > 0
                                && Character.isUpperCase(key.charAt(0))
                                && method.getParameterTypes().length == 0) {
                            if (key.length() == 1) {
                                key = key.toLowerCase();
                            } else if (!Character.isUpperCase(key.charAt(1))) {
                                key = key.substring(0, 1).toLowerCase()
                                        + key.substring(1);
                            }
                            methodInfos.add(new MethodInfo(key, method));
                        }
                    }
                } catch (Exception ignored) {
                }
            }

            METHOD_MAP.putIfAbsent(clazz, methodInfos);
        }

        return methodInfos;
    }
@author Robert HG (254963746@qq.com) on 12/28/15.
lts-core/src/main/java/com/github/ltsopensource/json/JSONObject.java