<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 單飛 閱讀(479) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 日日麻批免费40分钟无码| 国产妇乱子伦视频免费| 日本亚洲视频在线| 亚洲精品无码成人| 一二三四在线播放免费观看中文版视频 | 1000部羞羞禁止免费观看视频| 亚洲一区在线免费观看| 国产gav成人免费播放视频| 国产婷婷成人久久Av免费高清| 亚洲AV无码专区在线亚| 国产日产亚洲系列| 好先生在线观看免费播放| 亚洲免费视频播放| 精品香蕉在线观看免费| 一级片在线免费看| 亚洲五月综合网色九月色| 在线亚洲精品自拍| a级毛片在线免费观看| 国产亚洲精品久久久久秋霞| 国产精品成人观看视频免费| 一级毛片免费播放视频| 亚洲情A成黄在线观看动漫软件 | 99无码人妻一区二区三区免费| 特色特黄a毛片高清免费观看| 免费中文字幕一级毛片| 50岁老女人的毛片免费观看| 亚洲欧洲综合在线| 青春禁区视频在线观看直播免费 | 三年片在线观看免费观看大全动漫 | 亚洲国产精品成人精品小说| 浮力影院亚洲国产第一页| 免费能直接在线观看黄的视频 | 亚洲天堂一区二区三区| 国内精品久久久久久久亚洲| 特级淫片国产免费高清视频| 又粗又长又爽又长黄免费视频| 亚洲乱码国产一区三区| 免费99热在线观看| 最新仑乱免费视频| 亚洲高清中文字幕免费| 最近中文字幕电影大全免费版 |