public class ClassDescUtil extends Object
此类旨在通过类描述信息和类名查找对应的类,如动态加载类等。
Modifier and Type | Field and Description |
---|---|
static char |
JVM_BOOLEAN
boolean(Z).
|
static char |
JVM_BYTE
byte(B).
|
static char |
JVM_CHAR
char(C).
|
static char |
JVM_DOUBLE
double(D).
|
static char |
JVM_FLOAT
float(F).
|
static char |
JVM_INT
int(I).
|
static char |
JVM_LONG
long(J).
|
static char |
JVM_SHORT
short(S).
|
static char |
JVM_VOID
void(V).
|
Constructor and Description |
---|
ClassDescUtil() |
Modifier and Type | Method and Description |
---|---|
static Class<?> |
descToClass(String desc)
Class描述转Class
"[Z" => boolean[].class
"[[Ljava/util/Map;" => java.util.Map[][].class
|
static Class<?> |
descToClass(String desc,
boolean isInitialized,
ClassLoader cl)
Class描述转Class
"[Z" => boolean[].class
"[[Ljava/util/Map;" => java.util.Map[][].class
|
static String |
descToName(String desc)
类描述转名称
"[[I" => "int[][]"
|
static String |
getCodeBase(Class<?> clazz)
获取code base
|
static String |
getDesc(Class<?> c)
获取类描述,这是编译成class文件后的二进制名称
getDesc(boolean.class) // Z
getDesc(Boolean.class) // Ljava/lang/Boolean;
getDesc(double[][][].class) // [[[D
getDesc(int.class) // I
getDesc(Integer.class) // Ljava/lang/Integer;
|
static String |
getDesc(Executable methodOrConstructor,
boolean appendName)
获取方法或构造描述
方法(appendName为 true ):
int do(int arg1) => "do(I)I"
void do(String arg1,boolean arg2) => "do(Ljava/lang/String;Z)V"
构造:
"()V", "(Ljava/lang/String;I)V"
当appendName为false 时:
getDesc(Object.class.getMethod("hashCode")) // ()I
getDesc(Object.class.getMethod("toString")) // ()Ljava/lang/String;
getDesc(Object.class.getMethod("equals", Object.class)) // (Ljava/lang/Object;)Z
getDesc(ArrayUtil.class.getMethod("isEmpty", Object[].class)) // "([Ljava/lang/Object;)Z"
|
static String |
getName(Class<?> c)
|
static String |
getName(Executable executable)
获取构造或方法的名称表示
构造: "()", "(java.lang.String,int)" 方法: "void do(int)", "void do()", "int do(java.lang.String,boolean)" |
static Class<?> |
nameToClass(String name,
boolean isInitialized,
ClassLoader cl)
类名称转类
"boolean" => boolean.class
"java.util.Map[][]" => java.util.Map[][].class
|
static String |
nameToDesc(String name)
类名称转描述
java.util.Map[][] => "[[Ljava/util/Map;"
|
public static final char JVM_VOID
public static final char JVM_BOOLEAN
public static final char JVM_BYTE
public static final char JVM_CHAR
public static final char JVM_DOUBLE
public static final char JVM_FLOAT
public static final char JVM_INT
public static final char JVM_LONG
public static final char JVM_SHORT
public static Class<?> descToClass(String desc) throws HutoolException
"[Z" => boolean[].class
"[[Ljava/util/Map;" => java.util.Map[][].class
desc
- 类描述HutoolException
- 类没有找到public static Class<?> descToClass(String desc, boolean isInitialized, ClassLoader cl) throws HutoolException
"[Z" => boolean[].class
"[[Ljava/util/Map;" => java.util.Map[][].class
desc
- 类描述isInitialized
- 是否初始化类cl
- ClassLoader
HutoolException
- 类没有找到public static String getDesc(Class<?> c)
getDesc(boolean.class) // Z
getDesc(Boolean.class) // Ljava/lang/Boolean;
getDesc(double[][][].class) // [[[D
getDesc(int.class) // I
getDesc(Integer.class) // Ljava/lang/Integer;
c
- class.public static String getDesc(Executable methodOrConstructor, boolean appendName)
true
):
int do(int arg1) => "do(I)I"
void do(String arg1,boolean arg2) => "do(Ljava/lang/String;Z)V"
构造:
"()V", "(Ljava/lang/String;I)V"
当appendName为false
时:
getDesc(Object.class.getMethod("hashCode")) // ()I
getDesc(Object.class.getMethod("toString")) // ()Ljava/lang/String;
getDesc(Object.class.getMethod("equals", Object.class)) // (Ljava/lang/Object;)Z
getDesc(ArrayUtil.class.getMethod("isEmpty", Object[].class)) // "([Ljava/lang/Object;)Z"
methodOrConstructor
- 方法或构造appendName
- 是否包含方法名称public static String getName(Executable executable)
"()", "(java.lang.String,int)"
方法:
"void do(int)", "void do()", "int do(java.lang.String,boolean)"
executable
- 方法或构造public static Class<?> nameToClass(String name, boolean isInitialized, ClassLoader cl)
"boolean" => boolean.class
"java.util.Map[][]" => java.util.Map[][].class
name
- name.isInitialized
- 是否初始化类cl
- ClassLoader instance.public static String nameToDesc(String name)
java.util.Map[][] => "[[Ljava/util/Map;"
name
- 名称public static String descToName(String desc)
"[[I" => "int[][]"
desc
- 描述Copyright © 2025. All rights reserved.