com.alibaba.dubbo.common.utils
Class ReflectUtils

java.lang.Object
  extended by com.alibaba.dubbo.common.utils.ReflectUtils

public final class ReflectUtils
extends Object

ReflectUtils

Author:
qian.lei

Field Summary
static String ARRAY_DESC
           
static String CLASS_DESC
           
static Pattern DESC_PATTERN
           
static String DESC_REGEX
           
static Class<?>[] EMPTY_CLASS_ARRAY
           
static Pattern GETTER_METHOD_DESC_PATTERN
           
static Pattern IS_HAS_CAN_METHOD_DESC_PATTERN
           
static String JAVA_IDENT_REGEX
           
static String JAVA_NAME_REGEX
           
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).
static Pattern METHOD_DESC_PATTERN
           
static String METHOD_DESC_REGEX
           
static Pattern SETTER_METHOD_DESC_PATTERN
           
 
Method Summary
static Class<?> desc2class(String desc)
          desc to class.
static Class<?>[] desc2classArray(String desc)
          get class array instance.
static String desc2name(String desc)
          desc to name.
static Constructor<?> findConstructor(Class<?> clazz, Class<?> paramType)
           
static Method findMethodByMethodName(Class<?> clazz, String methodName)
           
static Method findMethodByMethodSignature(Class<?> clazz, String methodName, String[] parameterTypes)
          根据方法签名从类中找出方法。
static Class<?> forName(String name)
           
static Map<String,Field> getBeanPropertyFields(Class cl)
           
static Map<String,Method> getBeanPropertyReadMethods(Class cl)
           
static Class<?> getBoxedClass(Class<?> c)
           
static String getCodeBase(Class<?> cls)
           
static String getDesc(Class<?> c)
          get class desc.
static String getDesc(Class<?>[] cs)
          get class array desc.
static String getDesc(Constructor<?> c)
          get constructor desc.
static String getDesc(javassist.CtClass c)
          get class desc.
static String getDesc(javassist.CtConstructor c)
          get constructor desc.
static String getDesc(javassist.CtMethod m)
          get method desc.
static String getDesc(Method m)
          get method desc.
static String getDescWithoutMethodName(javassist.CtMethod m)
          get method desc.
static String getDescWithoutMethodName(Method m)
          get method desc.
static Object getEmptyObject(Class<?> returnType)
           
static Class<?> getGenericClass(Class<?> cls)
           
static Class<?> getGenericClass(Class<?> cls, int i)
           
static String getName(Class<?> c)
          get name.
static String getName(Constructor<?> c)
          get constructor name.
static String getName(Method m)
          get method name.
static String getPropertyNameFromBeanReadMethod(Method method)
           
static String getPropertyNameFromBeanWriteMethod(Method method)
           
static String getSignature(String methodName, Class<?>[] parameterTypes)
           
static boolean isBeanPropertyReadMethod(Method method)
           
static boolean isBeanPropertyWriteMethod(Method method)
           
static boolean isCompatible(Class<?>[] cs, Object[] os)
          is compatible.
static boolean isCompatible(Class<?> c, Object o)
          is compatible.
static boolean isInstance(Object obj, String interfaceClazzName)
          检查对象是否是指定接口的实现。
static boolean isPrimitive(Class<?> cls)
           
static boolean isPrimitives(Class<?> cls)
           
static boolean isPublicInstanceField(Field field)
           
static Class<?> name2class(String name)
          name to class.
static String name2desc(String name)
          name to desc.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

JVM_VOID

public static final char JVM_VOID
void(V).

See Also:
Constant Field Values

JVM_BOOLEAN

public static final char JVM_BOOLEAN
boolean(Z).

See Also:
Constant Field Values

JVM_BYTE

public static final char JVM_BYTE
byte(B).

See Also:
Constant Field Values

JVM_CHAR

public static final char JVM_CHAR
char(C).

See Also:
Constant Field Values

JVM_DOUBLE

public static final char JVM_DOUBLE
double(D).

See Also:
Constant Field Values

JVM_FLOAT

public static final char JVM_FLOAT
float(F).

See Also:
Constant Field Values

JVM_INT

public static final char JVM_INT
int(I).

See Also:
Constant Field Values

JVM_LONG

public static final char JVM_LONG
long(J).

See Also:
Constant Field Values

JVM_SHORT

public static final char JVM_SHORT
short(S).

See Also:
Constant Field Values

EMPTY_CLASS_ARRAY

public static final Class<?>[] EMPTY_CLASS_ARRAY

JAVA_IDENT_REGEX

public static final String JAVA_IDENT_REGEX
See Also:
Constant Field Values

JAVA_NAME_REGEX

public static final String JAVA_NAME_REGEX
See Also:
Constant Field Values

CLASS_DESC

public static final String CLASS_DESC
See Also:
Constant Field Values

ARRAY_DESC

public static final String ARRAY_DESC
See Also:
Constant Field Values

DESC_REGEX

public static final String DESC_REGEX
See Also:
Constant Field Values

DESC_PATTERN

public static final Pattern DESC_PATTERN

METHOD_DESC_REGEX

public static final String METHOD_DESC_REGEX
See Also:
Constant Field Values

METHOD_DESC_PATTERN

public static final Pattern METHOD_DESC_PATTERN

GETTER_METHOD_DESC_PATTERN

public static final Pattern GETTER_METHOD_DESC_PATTERN

SETTER_METHOD_DESC_PATTERN

public static final Pattern SETTER_METHOD_DESC_PATTERN

IS_HAS_CAN_METHOD_DESC_PATTERN

public static final Pattern IS_HAS_CAN_METHOD_DESC_PATTERN
Method Detail

isPrimitives

public static boolean isPrimitives(Class<?> cls)

isPrimitive

public static boolean isPrimitive(Class<?> cls)

getBoxedClass

public static Class<?> getBoxedClass(Class<?> c)

isCompatible

public static boolean isCompatible(Class<?> c,
                                   Object o)
is compatible.

Parameters:
c - class.
o - instance.
Returns:
compatible or not.

isCompatible

public static boolean isCompatible(Class<?>[] cs,
                                   Object[] os)
is compatible.

Parameters:
cs - class array.
os - object array.
Returns:
compatible or not.

getCodeBase

public static String getCodeBase(Class<?> cls)

getName

public static String getName(Class<?> c)
get name. java.lang.Object[][].class => "java.lang.Object[][]"

Parameters:
c - class.
Returns:
name.

getGenericClass

public static Class<?> getGenericClass(Class<?> cls)

getGenericClass

public static Class<?> getGenericClass(Class<?> cls,
                                       int i)

getName

public static String getName(Method m)
get method name. "void do(int)", "void do()", "int do(java.lang.String,boolean)"

Parameters:
m - method.
Returns:
name.

getSignature

public static String getSignature(String methodName,
                                  Class<?>[] parameterTypes)

getName

public static String getName(Constructor<?> c)
get constructor name. "()", "(java.lang.String,int)"

Parameters:
c - constructor.
Returns:
name.

getDesc

public static String getDesc(Class<?> c)
get class desc. boolean[].class => "[Z" Object.class => "Ljava/lang/Object;"

Parameters:
c - class.
Returns:
desc.
Throws:
javassist.NotFoundException

getDesc

public static String getDesc(Class<?>[] cs)
get class array desc. [int.class, boolean[].class, Object.class] => "I[ZLjava/lang/Object;"

Parameters:
cs - class array.
Returns:
desc.
Throws:
javassist.NotFoundException

getDesc

public static String getDesc(Method m)
get method desc. int do(int arg1) => "do(I)I" void do(String arg1,boolean arg2) => "do(Ljava/lang/String;Z)V"

Parameters:
m - method.
Returns:
desc.

getDesc

public static String getDesc(Constructor<?> c)
get constructor desc. "()V", "(Ljava/lang/String;I)V"

Parameters:
c - constructor.
Returns:
desc

getDescWithoutMethodName

public static String getDescWithoutMethodName(Method m)
get method desc. "(I)I", "()V", "(Ljava/lang/String;Z)V"

Parameters:
m - method.
Returns:
desc.

getDesc

public static String getDesc(javassist.CtClass c)
                      throws javassist.NotFoundException
get class desc. Object.class => "Ljava/lang/Object;" boolean[].class => "[Z"

Parameters:
c - class.
Returns:
desc.
Throws:
javassist.NotFoundException

getDesc

public static String getDesc(javassist.CtMethod m)
                      throws javassist.NotFoundException
get method desc. "do(I)I", "do()V", "do(Ljava/lang/String;Z)V"

Parameters:
m - method.
Returns:
desc.
Throws:
javassist.NotFoundException

getDesc

public static String getDesc(javassist.CtConstructor c)
                      throws javassist.NotFoundException
get constructor desc. "()V", "(Ljava/lang/String;I)V"

Parameters:
c - constructor.
Returns:
desc
Throws:
javassist.NotFoundException

getDescWithoutMethodName

public static String getDescWithoutMethodName(javassist.CtMethod m)
                                       throws javassist.NotFoundException
get method desc. "(I)I", "()V", "(Ljava/lang/String;Z)V".

Parameters:
m - method.
Returns:
desc.
Throws:
javassist.NotFoundException

name2desc

public static String name2desc(String name)
name to desc. java.util.Map[][] => "[[Ljava/util/Map;"

Parameters:
name - name.
Returns:
desc.

desc2name

public static String desc2name(String desc)
desc to name. "[[I" => "int[][]"

Parameters:
desc - desc.
Returns:
name.

forName

public static Class<?> forName(String name)

name2class

public static Class<?> name2class(String name)
                           throws ClassNotFoundException
name to class. "boolean" => boolean.class "java.util.Map[][]" => java.util.Map[][].class

Parameters:
name - name.
Returns:
Class instance.
Throws:
ClassNotFoundException

desc2class

public static Class<?> desc2class(String desc)
                           throws ClassNotFoundException
desc to class. "[Z" => boolean[].class "[[Ljava/util/Map;" => java.util.Map[][].class

Parameters:
desc - desc.
Returns:
Class instance.
Throws:
ClassNotFoundException

desc2classArray

public static Class<?>[] desc2classArray(String desc)
                                  throws ClassNotFoundException
get class array instance.

Parameters:
desc - desc.
Returns:
Class class array.
Throws:
ClassNotFoundException

findMethodByMethodSignature

public static Method findMethodByMethodSignature(Class<?> clazz,
                                                 String methodName,
                                                 String[] parameterTypes)
                                          throws NoSuchMethodException,
                                                 ClassNotFoundException
根据方法签名从类中找出方法。

Parameters:
clazz - 查找的类。
methodName - 方法签名,形如method1(int, String)。也允许只给方法名不参数只有方法名,形如method2。
Returns:
返回查找到的方法。
Throws:
NoSuchMethodException
ClassNotFoundException
IllegalStateException - 给定的方法签名找到多个方法(方法签名中没有指定参数,又有有重载的方法的情况)

findMethodByMethodName

public static Method findMethodByMethodName(Class<?> clazz,
                                            String methodName)
                                     throws NoSuchMethodException,
                                            ClassNotFoundException
Throws:
NoSuchMethodException
ClassNotFoundException

findConstructor

public static Constructor<?> findConstructor(Class<?> clazz,
                                             Class<?> paramType)
                                      throws NoSuchMethodException
Throws:
NoSuchMethodException

isInstance

public static boolean isInstance(Object obj,
                                 String interfaceClazzName)
检查对象是否是指定接口的实现。

不会触发到指定接口的Class,所以如果ClassLoader中没有指定接口类时,也不会出错。

Parameters:
obj - 要检查的对象
interfaceClazzName - 指定的接口名
Returns:
返回true,如果对象实现了指定接口;否则返回false

getEmptyObject

public static Object getEmptyObject(Class<?> returnType)

isBeanPropertyReadMethod

public static boolean isBeanPropertyReadMethod(Method method)

getPropertyNameFromBeanReadMethod

public static String getPropertyNameFromBeanReadMethod(Method method)

isBeanPropertyWriteMethod

public static boolean isBeanPropertyWriteMethod(Method method)

getPropertyNameFromBeanWriteMethod

public static String getPropertyNameFromBeanWriteMethod(Method method)

isPublicInstanceField

public static boolean isPublicInstanceField(Field field)

getBeanPropertyFields

public static Map<String,Field> getBeanPropertyFields(Class cl)

getBeanPropertyReadMethods

public static Map<String,Method> getBeanPropertyReadMethods(Class cl)


Copyright © 2012–2017 Alibaba. All rights reserved.