⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debug.java

📁 华为java接口反编译结果!其中包含其所有接口实现过程
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                return;
            }
            if(getDepth(prefix) > depth)
            {
                String str = String.valueOf(String.valueOf((new StringBuffer(String.valueOf(String.valueOf(formatClassName(obj.getClass(), obj))))).append(" @").append(System.identityHashCode(obj))));
                if(prefix.trim().endsWith(str.trim()))
                    str = "";
                String toStr;
                try
                {
                    toStr = obj.toString();
                    if(toStr.indexOf(64) > 0)
                        toStr = " {Stack overflow!}";
                }
                catch(StackOverflowError t)
                {
                    toStr = " {Stack overflow!}";
                }
                dump(prefix, String.valueOf(str) + String.valueOf(toStr));
                return;
            }
            if(obj instanceof Vector)
            {
                dump(prefix, depth, checkCircuit, (Vector)obj);
                return;
            }
            if(obj instanceof Map)
            {
                dump(prefix, depth, checkCircuit, (Map)obj);
                return;
            }
            if(obj instanceof Enumeration)
            {
                dump(prefix, depth, checkCircuit, (Enumeration)obj);
                return;
            }
            if(obj instanceof Object[])
            {
                dump(prefix, depth, checkCircuit, (Object[])obj);
                return;
            }
            if(obj instanceof Throwable)
            {
                dump(prefix, (Throwable)obj);
                return;
            }
            if(obj instanceof byte[])
            {
                dump(prefix, (byte[])obj);
                return;
            }
            if(obj.getClass().isArray())
            {
                int len = Array.getLength(obj);
                dumpBegin(prefix, checkCircuit, obj);
                StringBuffer content = new StringBuffer();
                for(int i = 0; i < len; i++)
                {
                    content.append(fixLength(Array.get(obj, i).toString(), 4));
                    if(i % 8 == 7 && i < len - 1)
                        content.append(String.valueOf(lineSeparator) + String.valueOf(indent(prefix)));
                }

                dump(indent(prefix), content.toString());
                dumpEnd(prefix, checkCircuit, obj);
                return;
            }
            if(Class.forName("javax.servlet.ServletRequest").isInstance(obj))
            {
                dumpServletRequest(prefix, obj);
                return;
            }
        }
        catch(ClassNotFoundException classnotfoundexception) { }
        dumpBegin(prefix, checkCircuit, obj);
        for(Class c = obj.getClass(); c != null; c = c.getSuperclass())
        {
            Field f[];
            try
            {
                f = c.getDeclaredFields();
            }
            catch(SecurityException ex2)
            {
                dump(indent(prefix), "Can't dump object member for security reason.");
                return;
            }
            for(int i = 0; i < f.length; i++)
            {
                String m = Modifier.toString(f[i].getModifiers());
                if(m.indexOf("static") > 0)
                    continue;
                String n = f[i].getName();
                Object v = "[unkonwn]";
                try
                {
                    f[i].setAccessible(true);
                }
                catch(SecurityException securityexception) { }
                try
                {
                    v = f[i].get(obj);
                    if(v != null)
                        if(v instanceof String)
                            v = String.valueOf(String.valueOf((new StringBuffer("\"")).append(v).append('"')));
                        else
                        if(v instanceof Character)
                        {
                            char cv = ((Character)v).charValue();
                            if(cv < ' ')
                            {
                                StringBuffer sbv = new StringBuffer();
                                sbv.append("\\u");
                                sbv.append(Integer.toHexString(cv));
                                for(; sbv.length() < 6; sbv.insert(2, '0'));
                                v = sbv;
                            }
                            v = String.valueOf(String.valueOf((new StringBuffer("'")).append(v).append('\'')));
                        }
                }
                catch(Exception exception) { }
                Class ct = f[i].getType();
                String t = formatClassName(ct, v);
                dump(String.valueOf(String.valueOf((new StringBuffer(String.valueOf(String.valueOf(indent(prefix))))).append(String.valueOf(String.valueOf((new StringBuffer(String.valueOf(String.valueOf(m)))).append(' ').append(t).append(' ').append(n))).trim()).append(" = "))), depth, checkCircuit, v);
            }

        }

        dumpEnd(prefix, checkCircuit, obj);
    }

    private static void dumpBegin(String prefix, Vector checkCircuit, Object obj)
    {
        String className = formatClassName(obj.getClass(), obj);
        int address = System.identityHashCode(obj);
        checkCircuit.addElement(new Integer(address));
        if(obj instanceof Array)
            className = String.valueOf(String.valueOf((new StringBuffer(String.valueOf(String.valueOf(className.substring(2))))).append('[').append(Array.getLength(obj)).append("] ")));
        if(className.startsWith("java.lang."))
            className = className.substring(10);
        if(prefix.trim().endsWith("@".concat(String.valueOf(String.valueOf(address)))))
            out.println(String.valueOf(String.valueOf(prefix)).concat(" {"));
        else
            out.println(String.valueOf(String.valueOf((new StringBuffer(String.valueOf(String.valueOf(prefix)))).append(className).append(" @").append(address).append(" {"))));
    }

    private static void dumpEnd(String prefix, Vector checkCircuit, Object obj)
    {
        checkCircuit.removeElement(new Integer(System.identityHashCode(obj)));
        int p = prefix.lastIndexOf(indentString);
        if(p > 0)
            prefix = String.valueOf(prefix.substring(0, p)) + String.valueOf(indentString);
        int i = 0;
        do
        {
            if(i >= prefix.length())
                break;
            char c = prefix.charAt(i);
            if(c != '\t' && c != ' ')
                break;
            out.print(c);
            i++;
        } while(true);
        out.println("}");
        out.flush();
    }

    public static String locate(String esc)
    {
        StringWriter sw = new StringWriter();
        (new Exception()).printStackTrace(new PrintWriter(sw));
        StringTokenizer st = new StringTokenizer(sw.toString(), "\n");
        do
        {
            if(!st.hasMoreTokens())
                break;
            String str = st.nextToken();
            if(str.indexOf("Exception") != -1 || str.indexOf((class$com$huawei$insa2$util$Debug != null ? class$com$huawei$insa2$util$Debug : (class$com$huawei$insa2$util$Debug = class$("com.huawei.insa2.util.Debug"))).getName()) != -1 || esc != null && str.indexOf(esc) != -1)
                continue;
            if(esc == "!@*#~^?'/\"")
                return str;
            int i = str.indexOf(40);
            int j = str.indexOf(41);
            if(i != -1 && j != -1)
                return str.substring(i, j + 1);
            break;
        } while(true);
        return "";
    }

    private static void setHex(byte src[], int lowByte, int value)
    {
        int i = 0;
        do
        {
            if(i >= 8)
                break;
            src[lowByte - i] = hexNumber[value & 0xf];
            value >>>= 4;
            if(value == 0)
                break;
            i++;
        } while(true);
    }

    private static String indent(String prefix)
    {
        int p = prefix.lastIndexOf(indentString);
        if(p > 0)
            prefix = String.valueOf(prefix.substring(0, p)) + String.valueOf(indentString);
        StringBuffer sb = new StringBuffer();
        int i = 0;
        do
        {
            if(i >= prefix.length())
                break;
            char c = prefix.charAt(i);
            if(c != '\t' && c != ' ')
                break;
            sb.append(c);
            i++;
        } while(true);
        sb.append(indentString);
        return sb.toString();
    }

    private static String formatClassName(Class c, Object obj)
    {
        String t = c.getName();
        if(t.charAt(t.length() - 1) == ';')
            t = t.substring(0, t.length() - 1);
        boolean isArray = false;
        boolean firstDimension = true;
        while(t.startsWith("[")) 
        {
            isArray = true;
            if(firstDimension && obj != null)
            {
                t = String.valueOf(String.valueOf((new StringBuffer(String.valueOf(String.valueOf(t.substring(1))))).append('[').append(Array.getLength(obj)).append(']')));
                firstDimension = false;
            } else
            {
                t = String.valueOf(String.valueOf(t.substring(1))).concat("[]");
            }
        }
        if(isArray)
        {
            char ch = t.charAt(0);
            t = t.substring(1);
            switch(ch)
            {
            case 66: // 'B'
                t = "byte".concat(String.valueOf(String.valueOf(t)));
                break;

            case 67: // 'C'
                t = "char".concat(String.valueOf(String.valueOf(t)));
                break;

            case 70: // 'F'
                t = "float".concat(String.valueOf(String.valueOf(t)));
                break;

            case 73: // 'I'
                t = "int".concat(String.valueOf(String.valueOf(t)));
                break;

            case 74: // 'J'
                t = "long".concat(String.valueOf(String.valueOf(t)));
                break;

            case 83: // 'S'
                t = "short".concat(String.valueOf(String.valueOf(t)));
                break;

            case 90: // 'Z'
                t = "boolean".concat(String.valueOf(String.valueOf(t)));
                break;
            }
        }
        if(t.startsWith("java.lang."))
            t = t.substring(10);
        else
        if(t.startsWith("class "))
            t = t.substring(7);
        return t;
    }

    private static String fixLength(String str, int len)
    {
        StringBuffer sb = new StringBuffer(len);
        sb.append(str);
        int n = len - str.length() % len;
        for(int i = 0; i < n; i++)
            sb.append(' ');

        return sb.toString();
    }

    private static String dumpHead()
    {
        StringBuffer sb = new StringBuffer();
        sb.append(sdf.format(new Date()));
        sb.append(locate(null));
        sb.append(' ');
        return sb.toString();
    }

    private static int getDepth(String prefix)
    {
        int count = 0;
        int indentLen = indentString.length();
        int i = -indentLen;
        do
        {
            count++;
            i = prefix.indexOf(indentString, i + indentLen);
        } while(i >= 0);
        return count;
    }

    static Class class$(String x$0)
    {
        try
        {
            return Class.forName(x$0);
        }
        catch(ClassNotFoundException x$0)
        {
            throw new NoClassDefFoundError(x$0.getMessage());
        }
    }

    static 
    {
        out = new PrintWriter(System.out);
        fullInfo = "!@*#~^?'/\"";
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -