<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    9910

    單飛

       :: 首頁 :: 聯系 :: 聚合  :: 管理
    不同classloader加載的class造成isAnnotationPresent失效

    @ComponentClass
    public class Home {
    }
    Class clazz = loader.loadClass("Home");??? //loader 和現在運行的classLoader不是相同的。
    flag = clazz.isAnnotationPresent(ComponentClass.class);//返回false
    原因:
    Class.clss
    ?public boolean isAnnotationPresent(
    ??????? Class<? extends Annotation> annotationClass) {
    ??????? if (annotationClass == null)
    ??????????? throw new NullPointerException();

    ??????? return getAnnotation(annotationClass) != null;
    ??? }


    public <A extends Annotation> A getAnnotation(Class<A> annotationClass) {
    ??????? if (annotationClass == null)
    ??????????? throw new NullPointerException();

    ??????? initAnnotationsIfNecessary();
    ??????? return (A) annotations.get(annotationClass);
    ??? }
    private transient Map<Class, Annotation> annotations;

    而不同的ClassLoader 加載的ComponentClass不是同一個對象,所以用Class作為id不合適,應該使用String。
    解決辦法:

    ComponentClass.class也使用loader加載這樣才能保證一致性。
    banq詳細的解答了這個問題:
    http://www.jdon.com/jive/article.jsp?forum=91&thread=15456

    Classloader存在下面問題:
    在一個JVM中可能存在多個ClassLoader,每個ClassLoader擁有自己的 NameSpace。一個ClassLoader只能擁有一個class對象類型的實例,但是不同的ClassLoader可能擁有相同的class對象 實例,這時可能產生致命的問題。如ClassLoaderA,裝載了類A的類型實例A1,而ClassLoaderB,也裝載了類A的對象實例A2。邏輯 上講A1=A2,但是由于A1和A2來自于不同的ClassLoader,它們實際上是完全不同的,如果A中定義了一個靜態變量c,則c在不同的 ClassLoader中的值是不同的。

    Thread{
    ??? ??? ??? ClassLoader cl = Thread.currentThread().getContextClassLoader();
    ??? ??? ??? URL[] urls = ...
    ??? ??? ??? ClassLoader ncl = new URLClassLoader(urls, cl);//構造新的
    ??? ??? ??? Thread.currentThread().setContextClassLoader(ncl);
    ??? ??? ??? do do do do;
    ??? ??? ??? Thread.currentThread().setContextClassLoader(cl);//執行完恢復
    }
    posted on 2006-12-20 20:35 單飛 閱讀(481) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 亚洲高清国产拍精品26U| 99精品视频在线观看免费| 国产成人精品免费视| 亚洲日本中文字幕| 午夜精品射精入后重之免费观看 | 国内免费高清在线观看| 91亚洲导航深夜福利| 十九岁在线观看免费完整版电影| 亚洲女同成av人片在线观看| 97无码人妻福利免费公开在线视频 | 亚洲国产精品VA在线看黑人| 久久免费线看线看| 无码专区—VA亚洲V天堂| 91精品国产免费久久国语蜜臀 | 国产黄片不卡免费| 亚洲AV无码欧洲AV无码网站| 免费精品99久久国产综合精品| 亚洲一区二区在线免费观看| 日本h在线精品免费观看| 亚洲日本天堂在线| 亚洲AⅤ视频一区二区三区| 97在线视频免费公开视频| 91亚洲国产成人精品下载| 四虎www免费人成| 国产福利在线观看永久免费| 亚洲视频中文字幕| 无人在线观看免费高清视频| 亚洲av无码专区青青草原| 国产国拍亚洲精品福利| 日韩人妻一区二区三区免费| 亚洲一本到无码av中文字幕 | 色婷婷六月亚洲婷婷丁香| 成人A级毛片免费观看AV网站| 日亚毛片免费乱码不卡一区| 久久噜噜噜久久亚洲va久| 最近免费中文字幕大全| 国产免费一级高清淫曰本片| 亚洲国产中文在线二区三区免| 四虎影视免费永久在线观看| 久久青草国产免费观看| 亚洲AV无码片一区二区三区|