From 9926c5728a0eb9f85842ad052c8dc8f63771db44 Mon Sep 17 00:00:00 2001 From: "tony.chenl" Date: Mon, 14 Nov 2011 06:59:45 +0000 Subject: [PATCH] =?UTF-8?q?DUBBO-13=20=E5=AF=B9class.forname=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0cache,=E5=B0=86=E6=89=80=E6=9C=89ClassLoader=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=96=B9=E6=B3=95=E8=AE=BE=E4=B8=BAprivate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@261 1a56cb94-b969-4eaa-88fa-be21384802f2 --- .../dubbo/common/utils/ReflectUtils.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/ReflectUtils.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/ReflectUtils.java index 6e0bb863b7..84ac7d4aec 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/ReflectUtils.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/utils/ReflectUtils.java @@ -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[]> DESC_CLASSARRAY_CACHE = new ConcurrentHashMap[]>(); + private static final ConcurrentMap> DESC_CLASS_CACHE = new ConcurrentHashMap>(); /** * 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;