public class AsmUtils extends Object
| 构造器和说明 |
|---|
AsmUtils() |
| 限定符和类型 | 方法和说明 |
|---|---|
static void |
addField(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode,
com.alibaba.deps.org.objectweb.asm.tree.FieldNode fieldNode) |
static void |
addMethod(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode,
com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) |
static String |
className(byte[] classBytes) |
static boolean |
containsMethodInsnNode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode,
String owner,
String name) |
static com.alibaba.deps.org.objectweb.asm.tree.ClassNode |
copy(com.alibaba.deps.org.objectweb.asm.tree.ClassNode source) |
static com.alibaba.deps.org.objectweb.asm.tree.MethodNode |
copy(com.alibaba.deps.org.objectweb.asm.tree.MethodNode source) |
static int |
currentJvmMajorVersion()
如果成功获取,返回大于 0 的值
|
static com.alibaba.deps.org.objectweb.asm.tree.FieldNode |
findField(List<com.alibaba.deps.org.objectweb.asm.tree.FieldNode> fields,
String name) |
static com.alibaba.deps.org.objectweb.asm.tree.MethodNode |
findFirstMethod(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes,
String name) |
static com.alibaba.deps.org.objectweb.asm.tree.AbstractInsnNode |
findInitConstructorInstruction(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) |
static com.alibaba.deps.org.objectweb.asm.tree.MethodNode |
findMethod(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes,
com.alibaba.deps.org.objectweb.asm.tree.MethodNode target) |
static com.alibaba.deps.org.objectweb.asm.tree.MethodNode |
findMethod(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes,
String name,
String desc) |
static List<com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode> |
findMethodInsnNode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode,
String owner,
String name) |
static List<com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode> |
findMethodInsnNode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode,
String owner,
String name,
String desc) |
static List<com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode> |
findMethodInsnNodeWithPrefix(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode,
String prefix) |
static List<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> |
findMethods(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes,
String name) |
static boolean |
fitCurrentJvmMajorVersion(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode)
检查当前的字节码版本是否适配
|
static void |
fixConstructorExceptionTable(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) |
static void |
fixMajorVersion(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) |
static int |
getMajorVersion(int version)
Java ClassFile versions (the minor version is stored in the 16 most
significant bits, and the major version in the 16 least significant bits).
|
String[] |
getParameterNames(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) |
static String |
internalClassName(Class<?> clazz) |
static String |
internalClassName(String className) |
static boolean |
isAbstract(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) |
static boolean |
isConstructor(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) |
static boolean |
isEnhancerByCGLIB(String className) |
static boolean |
isNative(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) |
static boolean |
isStatic(com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode methodInsnNode) |
static boolean |
isStatic(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) |
static com.alibaba.deps.org.objectweb.asm.tree.ClassNode |
loadClass(Class<?> clazz) |
static String |
methodDeclaration(com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode methodInsnNode) |
static String |
methodDeclaration(com.alibaba.deps.org.objectweb.asm.Type owner,
com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) |
static com.alibaba.deps.org.objectweb.asm.tree.MethodNode |
newMethodNode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode source) |
static com.alibaba.deps.org.objectweb.asm.tree.ClassNode |
removeJSRInstructions(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) |
static com.alibaba.deps.org.objectweb.asm.tree.MethodNode |
removeJSRInstructions(com.alibaba.deps.org.objectweb.asm.tree.MethodNode subjectMethod) |
static void |
removeLineNumbers(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) |
static com.alibaba.deps.org.objectweb.asm.tree.MethodNode |
removeLineNumbers(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) |
static byte[] |
renameClass(byte[] classBytes,
String newClassName) |
static com.alibaba.deps.org.objectweb.asm.tree.ClassNode |
renameClass(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode,
String newClassName) |
static void |
replaceMethod(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode,
com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) |
static int |
setMajorVersion(int version,
int majorVersion)
替换掉完整 version里的 major version
|
static String |
toASMCode(byte[] bytecode) |
static String |
toASMCode(byte[] bytecode,
boolean debug) |
static String |
toASMCode(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) |
static String |
toASMCode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) |
static byte[] |
toBytes(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) |
static byte[] |
toBytes(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode,
ClassLoader classLoader,
com.alibaba.deps.org.objectweb.asm.ClassReader classReader)
Generate class bytes from class node.
|
static com.alibaba.deps.org.objectweb.asm.tree.ClassNode |
toClassNode(byte[] classBytes) |
static com.alibaba.deps.org.objectweb.asm.ClassReader |
toClassNode(byte[] classBytes,
com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) |
static String |
uniqueNameForMethod(String className,
String methodName,
String desc) |
static void |
updateMajorVersion(com.alibaba.deps.org.objectweb.asm.tree.ClassNode from,
com.alibaba.deps.org.objectweb.asm.tree.ClassNode to)
比如两份字节码的 major version,如果 from 的比 to 的要高,则设置 to 的 major version 为 from的 major
version
|
public static com.alibaba.deps.org.objectweb.asm.tree.ClassNode loadClass(Class<?> clazz) throws IOException
IOExceptionpublic static com.alibaba.deps.org.objectweb.asm.tree.ClassNode toClassNode(byte[] classBytes)
public static com.alibaba.deps.org.objectweb.asm.ClassReader toClassNode(byte[] classBytes,
com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode)
public static byte[] toBytes(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode,
ClassLoader classLoader,
com.alibaba.deps.org.objectweb.asm.ClassReader classReader)
classNode - classLoader - classReader - origin class readerpublic static byte[] toBytes(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode)
public static com.alibaba.deps.org.objectweb.asm.tree.ClassNode renameClass(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode,
String newClassName)
public static byte[] renameClass(byte[] classBytes,
String newClassName)
public static void replaceMethod(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode,
com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode)
public static String toASMCode(byte[] bytecode) throws IOException
IOExceptionpublic static String toASMCode(byte[] bytecode, boolean debug) throws IOException
IOExceptionpublic static String toASMCode(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode)
public static String toASMCode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode)
public static com.alibaba.deps.org.objectweb.asm.tree.MethodNode newMethodNode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode source)
public static com.alibaba.deps.org.objectweb.asm.tree.MethodNode removeJSRInstructions(com.alibaba.deps.org.objectweb.asm.tree.MethodNode subjectMethod)
public static com.alibaba.deps.org.objectweb.asm.tree.ClassNode removeJSRInstructions(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode)
public static com.alibaba.deps.org.objectweb.asm.tree.MethodNode removeLineNumbers(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode)
public static void removeLineNumbers(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode)
public static com.alibaba.deps.org.objectweb.asm.tree.MethodNode findFirstMethod(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes, String name)
public static List<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> findMethods(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes, String name)
public static com.alibaba.deps.org.objectweb.asm.tree.MethodNode findMethod(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes, com.alibaba.deps.org.objectweb.asm.tree.MethodNode target)
public static com.alibaba.deps.org.objectweb.asm.tree.MethodNode findMethod(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes, String name, String desc)
public static com.alibaba.deps.org.objectweb.asm.tree.AbstractInsnNode findInitConstructorInstruction(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode)
public static List<com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode> findMethodInsnNodeWithPrefix(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode, String prefix)
public static List<com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode> findMethodInsnNode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode, String owner, String name)
public static List<com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode> findMethodInsnNode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode, String owner, String name, String desc)
public static boolean containsMethodInsnNode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode,
String owner,
String name)
public static boolean isStatic(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode)
public static boolean isStatic(com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode methodInsnNode)
public static boolean isAbstract(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode)
public static boolean isConstructor(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode)
public static boolean isNative(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode)
public String[] getParameterNames(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode)
public static com.alibaba.deps.org.objectweb.asm.tree.MethodNode copy(com.alibaba.deps.org.objectweb.asm.tree.MethodNode source)
public static com.alibaba.deps.org.objectweb.asm.tree.ClassNode copy(com.alibaba.deps.org.objectweb.asm.tree.ClassNode source)
public static String methodDeclaration(com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode methodInsnNode)
public static String methodDeclaration(com.alibaba.deps.org.objectweb.asm.Type owner, com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode)
public static com.alibaba.deps.org.objectweb.asm.tree.FieldNode findField(List<com.alibaba.deps.org.objectweb.asm.tree.FieldNode> fields, String name)
public static void addField(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode,
com.alibaba.deps.org.objectweb.asm.tree.FieldNode fieldNode)
public static void addMethod(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode,
com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode)
public static String uniqueNameForMethod(String className, String methodName, String desc)
public static int getMajorVersion(int version)
version - Opcodes.V_PREVIEWpublic static int setMajorVersion(int version,
int majorVersion)
version - majorVersion - public static String className(byte[] classBytes)
public static boolean isEnhancerByCGLIB(String className)
public static void fixConstructorExceptionTable(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode)
public static void fixMajorVersion(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode)
public static void updateMajorVersion(com.alibaba.deps.org.objectweb.asm.tree.ClassNode from,
com.alibaba.deps.org.objectweb.asm.tree.ClassNode to)
from - to - public static int currentJvmMajorVersion()
public static boolean fitCurrentJvmMajorVersion(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode)
classNode - Copyright © 2018–2023. All rights reserved.