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

📄 classutil.java

📁 j2me 混淆包,用于混淆j2me的原代码用的
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
     *                                 e.g. "<code>mypackage/MyClass</code>".     * @param accessFlags              the access flags of the method.     * @param internalMethodName       the internal method name,     *                                 e.g. "<code>myMethod</code>" or     *                                      "<code>&lt;init&gt;</code>".     * @param internalMethodDescriptor the internal method descriptor,     *                                 e.g. "<code>(II)Z</code>".     * @return the external full method description,     *                                 e.g. "<code>public boolean myMethod(int,int)</code>" or     *                                      "<code>public MyClass(int,int)</code>".     */    public static String externalFullMethodDescription(String internalClassName,                                                       int    accessFlags,                                                       String internalMethodName,                                                       String internalMethodDescriptor)    {        return externalMethodAccessFlags(accessFlags) +               externalMethodReturnTypeAndName(internalClassName,                                               internalMethodName,                                               internalMethodDescriptor) +               ClassConstants.EXTERNAL_METHOD_ARGUMENTS_OPEN +               externalMethodArguments(internalMethodDescriptor) +               ClassConstants.EXTERNAL_METHOD_ARGUMENTS_CLOSE;    }    /**     * Converts internal class access flags into an external access description.     * @param accessFlags the class access flags.     * @return the external class access description,     *         e.g. "<code>public final </code>".     */    public static String externalClassAccessFlags(int accessFlags)    {        return externalClassAccessFlags(accessFlags, "");    }    /**     * Converts internal class access flags into an external access description.     * @param accessFlags the class access flags.     * @param prefix      a prefix that is added to each access modifier.     * @return the external class access description,     *         e.g. "<code>public final </code>".     */    public static String externalClassAccessFlags(int accessFlags, String prefix)    {        if (accessFlags == 0)        {            return EMPTY_STRING;        }        StringBuffer string = new StringBuffer(50);        if ((accessFlags & ClassConstants.INTERNAL_ACC_PUBLIC) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_PUBLIC).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_FINAL) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_FINAL).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_INTERFACE) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_INTERFACE).append(" ");        }        else        {            if ((accessFlags & ClassConstants.INTERNAL_ACC_ABSTRACT) != 0)            {                string.append(prefix).append(ClassConstants.EXTERNAL_ACC_ABSTRACT).append(" ");            }        }        return string.toString();    }    /**     * Converts internal field access flags into an external access description.     * @param accessFlags the field access flags.     * @return the external field access description,     *         e.g. "<code>public volatile </code>".     */    public static String externalFieldAccessFlags(int accessFlags)    {        return externalFieldAccessFlags(accessFlags, "");    }    /**     * Converts internal field access flags into an external access description.     * @param accessFlags the field access flags.     * @param prefix      a prefix that is added to each access modifier.     * @return the external field access description,     *         e.g. "<code>public volatile </code>".     */    public static String externalFieldAccessFlags(int accessFlags, String prefix)    {        if (accessFlags == 0)        {            return EMPTY_STRING;        }        StringBuffer string = new StringBuffer(50);        if ((accessFlags & ClassConstants.INTERNAL_ACC_PUBLIC) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_PUBLIC).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_PRIVATE) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_PRIVATE).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_PROTECTED) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_PROTECTED).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_STATIC) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_STATIC).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_FINAL) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_FINAL).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_VOLATILE) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_VOLATILE).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_TRANSIENT) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_TRANSIENT).append(" ");        }        return string.toString();    }    /**     * Converts internal method access flags into an external access description.     * @param accessFlags the method access flags.     * @return the external method access description,     *                    e.g. "<code>public synchronized </code>".     */    public static String externalMethodAccessFlags(int accessFlags)    {        return externalMethodAccessFlags(accessFlags, "");    }    /**     * Converts internal method access flags into an external access description.     * @param accessFlags the method access flags.     * @param prefix      a prefix that is added to each access modifier.     * @return the external method access description,     *                    e.g. "public synchronized ".     */    public static String externalMethodAccessFlags(int accessFlags, String prefix)    {        if (accessFlags == 0)        {            return EMPTY_STRING;        }        StringBuffer string = new StringBuffer(50);        if ((accessFlags & ClassConstants.INTERNAL_ACC_PUBLIC) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_PUBLIC).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_PRIVATE) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_PRIVATE).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_PROTECTED) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_PROTECTED).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_STATIC) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_STATIC).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_FINAL) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_FINAL).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_SYNCHRONIZED) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_SYNCHRONIZED).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_NATIVE) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_NATIVE).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_ABSTRACT) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_ABSTRACT).append(" ");        }        if ((accessFlags & ClassConstants.INTERNAL_ACC_STRICT) != 0)        {            string.append(prefix).append(ClassConstants.EXTERNAL_ACC_STRICT).append(" ");        }        return string.toString();    }    /**     * Converts an internal method descriptor into an external method return type.     * @param internalMethodDescriptor the internal method descriptor,     *                                 e.g. "<code>(II)Z</code>".     * @return the external method return type,     *                                 e.g. "<code>boolean</code>".     */    public static String externalMethodReturnType(String internalMethodDescriptor)    {        return externalType(internalMethodReturnType(internalMethodDescriptor));    }    /**     * Converts an internal class name, method name, and method descriptor to     * an external method return type and name.     * @param internalClassName        the internal name of the class of the method,     *                                 e.g. "<code>mypackage/MyClass</code>".     * @param internalMethodName       the internal method name,     *                                 e.g. "<code>myMethod</code>" or     *                                      "<code>&lt;init&gt;</code>".     * @param internalMethodDescriptor the internal method descriptor,     *                                 e.g. "<code>(II)Z</code>".     * @return the external method return type and name,     *                                 e.g. "<code>boolean myMethod</code>" or     *                                      "<code>MyClass</code>".     */    private static String externalMethodReturnTypeAndName(String internalClassName,                                                          String internalMethodName,                                                          String internalMethodDescriptor)    {        return internalMethodName.equals(ClassConstants.INTERNAL_METHOD_NAME_INIT) ?                    (ClassUtil.externalShortClassName(                     ClassUtil.externalClassName(internalClassName))) :                    (ClassUtil.externalMethodReturnType(internalMethodDescriptor) +                     " " +                     internalMethodName);    }    /**     * Converts an internal method descriptor into an external method argument     * description.     * @param internalMethodDescriptor the internal method descriptor,     *                                 e.g. "<code>(II)Z</code>".     * @return the external method argument description,     *                                 e.g. "<code>int,int</code>".     */    public static String externalMethodArguments(String internalMethodDescriptor)    {        StringBuffer externalMethodNameAndArguments = new StringBuffer();        internalTypeEnumeration.setDescriptor(internalMethodDescriptor);        while (internalTypeEnumeration.hasMoreTypes())        {            externalMethodNameAndArguments.append(externalType(internalTypeEnumeration.nextType()));            if (internalTypeEnumeration.hasMoreTypes())            {                externalMethodNameAndArguments.append(ClassConstants.EXTERNAL_METHOD_ARGUMENTS_SEPARATOR);            }        }        return externalMethodNameAndArguments.toString();    }    /**     * Returns the internal package name of the given internal class name.     * @param internalClassName the internal class name,     *                          e.g. "<code>java/lang/Object</code>".     * @return the internal package name,     *                          e.g. "<code>java/lang</code>".     */    public static String internalPackageName(String internalClassName)    {        int lastSeparatorIndex = internalClassName.lastIndexOf(ClassConstants.INTERNAL_PACKAGE_SEPARATOR);        if (lastSeparatorIndex < 0)        {            lastSeparatorIndex = 0;        }        return internalClassName.substring(0, lastSeparatorIndex);    }    /**     * Returns the external package name of the given external class name.     * @param externalClassName the external class name,     *                          e.g. "<code>java.lang.Object</code>".     * @return the external package name,     *                          e.g. "<code>java.lang</code>".     */    public static String externalPackageName(String externalClassName)    {        int lastSeparatorIndex = externalClassName.lastIndexOf(ClassConstants.EXTERNAL_PACKAGE_SEPARATOR);        if (lastSeparatorIndex < 0)        {            lastSeparatorIndex = 0;        }        return externalClassName.substring(0, lastSeparatorIndex);    }}

⌨️ 快捷键说明

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