DUBBO-13 对class.forname增加cache,将所有ClassLoader相关方法设为private

git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@261 1a56cb94-b969-4eaa-88fa-be21384802f2
This commit is contained in:
tony.chenl 2011-11-14 06:59:45 +00:00
parent b013e7bdf8
commit 9926c5728a
1 changed files with 10 additions and 10 deletions

View File

@ -109,7 +109,7 @@ public final class ReflectUtils {
public static final Pattern IS_HAS_CAN_METHOD_DESC_PATTERN = Pattern.compile("(?:is|has|can)([A-Z][_a-zA-Z0-9]*)\\(\\)Z");
private static final ConcurrentMap<String, Class<?>[]> DESC_CLASSARRAY_CACHE = new ConcurrentHashMap<String, Class<?>[]>();
private static final ConcurrentMap<String, Class<?>> DESC_CLASS_CACHE = new ConcurrentHashMap<String, Class<?>>();
/**
* is compatible.
@ -566,7 +566,7 @@ public final class ReflectUtils {
* @param name name.
* @return Class instance.
*/
public static Class<?> name2class(ClassLoader cl, String name) throws ClassNotFoundException
private static Class<?> name2class(ClassLoader cl, String name) throws ClassNotFoundException
{
int c = 0, index = name.indexOf('[');
if( index > 0 )
@ -634,7 +634,7 @@ public final class ReflectUtils {
* @return Class instance.
* @throws ClassNotFoundException
*/
public static Class<?> desc2class(ClassLoader cl, String desc) throws ClassNotFoundException
private static Class<?> desc2class(ClassLoader cl, String desc) throws ClassNotFoundException
{
switch( desc.charAt(0) )
{
@ -659,7 +659,11 @@ public final class ReflectUtils {
if( cl == null )
cl = ClassHelper.getClassLoader();
return Class.forName(desc, true, cl);
Class<?> clazz = DESC_CLASS_CACHE.get(desc);
if(clazz==null){
clazz = Class.forName(desc, true, cl);
}
return clazz;
}
/**
@ -671,11 +675,7 @@ public final class ReflectUtils {
*/
public static Class<?>[] desc2classArray(String desc) throws ClassNotFoundException
{
Class<?>[] ret = DESC_CLASSARRAY_CACHE.get(desc);
if (ret == null){
ret = desc2classArray(ClassHelper.getClassLoader(), desc);
DESC_CLASSARRAY_CACHE.put(desc, ret);
}
Class<?>[] ret = desc2classArray(ClassHelper.getClassLoader(), desc);
return ret;
}
@ -687,7 +687,7 @@ public final class ReflectUtils {
* @return Class[] class array.
* @throws ClassNotFoundException
*/
public static Class<?>[] desc2classArray(ClassLoader cl, String desc) throws ClassNotFoundException
private static Class<?>[] desc2classArray(ClassLoader cl, String desc) throws ClassNotFoundException
{
if( desc.length() == 0 )
return EMPTY_CLASS_ARRAY;