<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
    主站蜘蛛池模板: 黄色网页免费观看| 成人免费毛片观看| 国产精一品亚洲二区在线播放| 欧洲亚洲综合一区二区三区| 成年女人免费视频播放体验区| 亚洲福利一区二区精品秒拍| 中文字幕免费不卡二区| 中文亚洲AV片在线观看不卡 | 亚洲精品中文字幕无码蜜桃| 污污污视频在线免费观看| 国产高清在线精品免费软件| 亚洲综合色一区二区三区| 中文字幕影片免费在线观看| 亚洲第一页在线观看| 91在线手机精品免费观看| 亚洲国产精品久久| 久久国产乱子免费精品| 久久久受www免费人成| 亚洲国产成人精品久久久国产成人一区二区三区综 | 中文字幕乱码亚洲精品一区| 91精品免费在线观看| 亚洲日本国产精华液| 91视频免费网址| 亚洲午夜未满十八勿入| 久久成人a毛片免费观看网站| 亚洲va中文字幕无码久久| 91精品全国免费观看青青| 亚洲无线观看国产精品| 成年女人A毛片免费视频| 亚洲色自偷自拍另类小说| 国产又黄又爽胸又大免费视频| 久久精品国产亚洲7777| 三年片免费高清版| 亚洲国产精品无码一线岛国| 日本免费中文字幕| 77777_亚洲午夜久久多人| 美女内射毛片在线看免费人动物| 亚洲图片激情小说| 免费在线观看的网站| 亚洲一卡一卡二新区无人区| 日韩免费无码一区二区视频|