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

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

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

    探索與發現

    研究java技術

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      83 隨筆 :: 0 文章 :: 109 評論 :: 0 Trackbacks

    對于面向接口編程的項目免不了要一反射相接觸,動態得到實例:
    public interface a {
    ?public void sayHello();
    }
    ---------------------------
    第一種情況是當
    aImpl實現類為默認的構造方法:
    根據類名aImpl動態得到實例
    Class c=Class.forName("aImpl");
    a instance=(a)c.newInstance();
    a.sayHello();
    ------------
    第二種情況當
    aImpl為帶參數的構造方法時:
    Class o=Class.forName("aImpl");//aImpl為要實例化的例名,可以從配置文件當中獲取
    ???Constructor cous = null;
    ???cous=o.getConstructor(new Class[]{String.class});//構造器的參數類型
    ???a ao=(a) cous.newInstance(new Object[]{"xxx"});//"xxx為傳入的參數值
    ???ao.sayHello();
    第三種就是構造器為私有的時候,我們通過方法獲取實例getInstance()(自己定的)
    Class o=Class.forName("aImpl");
    ???Method method=o.getMethod("getInstance",new Class[]{String.class});
    //getInstance為返回為aImpl實例的方法名
    ??? a ao=(a) method.invoke(null,new Object[]{"xxx"});//注意了前面的參數為null,是有
    //條件的,就是要求getInstance為static類型的,我想大家都會這樣設計的
    ?????? ao.sayHello();
    做連接池的話,一種方式就是使用動態代理類,當Connection調用close()方法時,我們可以利用方法攔截器,在調用close方法的時候把連接放到緩存里面去,供以后再次利用..
    a ao=(a)Proxy.newProxyInstance(aImpl.class.getClassLoader(),aImpl.class.getInterfaces(),
    ?????new InvocationHandler()
    ?????{

    ??????public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    ???????Object re=null;
    ???????System.out.println("before--------"+method.getName());
    //在這里我們添加自己的一些處理方法,如把連接放到緩存去撒!
    ???????//re=method.invoke(new aImpl(),args);
    ???????return re;
    ??????}
    ????
    ?????});
    ???ao.sayHello();

    posted on 2006-07-15 22:00 蜘蛛 閱讀(3352) 評論(1)  編輯  收藏 所屬分類: java

    評論

    # re: java利用反射得到實例,和代理類proxy 2007-09-25 06:30 javazhai
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Event;
    import org.eclipse.swt.widgets.Listener;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.swt.widgets.Tree;
    import org.eclipse.swt.widgets.TreeItem;

    public class Snippet61 {

    public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    final Tree tree = new Tree(shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
    for (int i = 0; i < 4; i++) {
    TreeItem item0 = new TreeItem(tree, 0);
    item0.setText("Item " + i);
    for (int j = 0; j < 4; j++) {
    TreeItem item1 = new TreeItem(item0, 0);
    item1.setText("SubItem " + i + " " + j);
    for (int k = 0; k < 4; k++) {
    TreeItem item2 = new TreeItem(item1, 0);
    item2.setText("SubItem " + i + " " + j + " " + k);
    }
    }
    }
    tree.setBounds(0, 0, 100, 100);
    tree.addListener(SWT.Selection, new Listener() {
    public void handleEvent(Event e) {
    String string = "";
    TreeItem[] selection = tree.getSelection();
    if(selection!=null&&selection.length>0)
    expandOrCollapse(selection[0]);
    for (int i = 0; i < selection.length; i++)
    string += selection[i] + " ";
    System.out.println("Selection={" + string + "}");
    }
    });
    tree.addListener(SWT.DefaultSelection, new Listener() {
    public void handleEvent(Event e) {
    String string = "";
    TreeItem[] selection = tree.getSelection();
    for (int i = 0; i < selection.length; i++)
    string += selection[i] + " ";
    System.out.println("DefaultSelection={" + string + "}");
    }
    });
    tree.addListener(SWT.Expand, new Listener() {
    public void handleEvent(Event e) {
    System.out.println("Expand={" + e.item + "}");
    }
    });
    tree.addListener(SWT.Collapse, new Listener() {
    public void handleEvent(Event e) {
    System.out.println("Collapse={" + e.item + "}");
    }
    });
    tree.getItems()[0].setExpanded(true);
    tree.getItems()[0].getItems()[0].setExpanded(true);
    tree.getItems()[0].getItems()[0].setText("ttttt");
    tree.setSelection(tree.getItems()[0].getItems()[1]);
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
    if (!display.readAndDispatch())
    display.sleep();
    }
    display.dispose();
    }

    public static void expandOrCollapse(TreeItem treeItem) {
    boolean isExpanded=treeItem.getExpanded();
    treeItem.setExpanded(!isExpanded);
    // TreeItem[] selection = treeItem.getItems();
    // if (treeItem != null && selection.length > 0)
    // expandOrCollapse(selection[0]);
    }
    }  回復  更多評論
      

    主站蜘蛛池模板: 女bbbbxxxx另类亚洲| 一级毛片一级毛片免费毛片| 亚洲午夜成人精品无码色欲| 免费在线观看自拍性爱视频| 16女性下面无遮挡免费| 一本色道久久88亚洲综合 | 毛片免费全部播放无码| 久久亚洲AV午夜福利精品一区| 亚洲精品女同中文字幕| 久久精品乱子伦免费| 四虎影在线永久免费观看| 亚洲国产av美女网站| 中国性猛交xxxxx免费看| 日韩激情淫片免费看| 亚洲黄网在线观看| 人妻免费一区二区三区最新| 亚洲视频一区二区| 麻豆安全免费网址入口| 国产乱码免费卡1卡二卡3卡| 亚洲国产精品久久久久婷婷软件| 一级毛片免费一级直接观看| 亚洲国产精品成人精品无码区在线| 美女视频黄频a免费大全视频 | 亚洲乱码无码永久不卡在线 | 中文字幕在线免费观看视频| 亚洲人成在线播放网站| 青青草97国产精品免费观看| 亚洲人成人网站色www| 国产精品免费精品自在线观看| 亚洲国产精品婷婷久久| 免费看韩国黄a片在线观看| 亚洲综合色丁香麻豆| 99re在线精品视频免费| 亚洲AV无码乱码在线观看富二代 | 亚洲综合av一区二区三区| 2021久久精品免费观看| 国产亚洲精品美女久久久久久下载| 91视频免费网址| 国产亚洲综合一区柠檬导航| 九九精品免费视频| 亚洲入口无毒网址你懂的|