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

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

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

    探索與發(fā)現(xiàn)

    研究java技術(shù)

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

    對于面向接口編程的項目免不了要一反射相接觸,動態(tài)得到實例:
    public interface a {
    ?public void sayHello();
    }
    ---------------------------
    第一種情況是當
    aImpl實現(xiàn)類為默認的構(gòu)造方法:
    根據(jù)類名aImpl動態(tài)得到實例
    Class c=Class.forName("aImpl");
    a instance=(a)c.newInstance();
    a.sayHello();
    ------------
    第二種情況當
    aImpl為帶參數(shù)的構(gòu)造方法時:
    Class o=Class.forName("aImpl");//aImpl為要實例化的例名,可以從配置文件當中獲取
    ???Constructor cous = null;
    ???cous=o.getConstructor(new Class[]{String.class});//構(gòu)造器的參數(shù)類型
    ???a ao=(a) cous.newInstance(new Object[]{"xxx"});//"xxx為傳入的參數(shù)值
    ???ao.sayHello();
    第三種就是構(gòu)造器為私有的時候,我們通過方法獲取實例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"});//注意了前面的參數(shù)為null,是有
    //條件的,就是要求getInstance為static類型的,我想大家都會這樣設計的
    ?????? ao.sayHello();
    做連接池的話,一種方式就是使用動態(tài)代理類,當Connection調(diào)用close()方法時,我們可以利用方法攔截器,在調(diào)用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 蜘蛛 閱讀(3353) 評論(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]);
    }
    }  回復  更多評論
      

    主站蜘蛛池模板: 国产成人精品日本亚洲语音| 亚洲av无码专区亚洲av不卡| 西西大胆无码视频免费| 国产在线播放免费| 久久久精品视频免费观看| 亚洲色欲或者高潮影院| 日批日出水久久亚洲精品tv| 在线免费播放一级毛片| 久久精品国产亚洲AV蜜臀色欲 | 亚在线观看免费视频入口| 亚洲乱码一二三四区麻豆| 亚洲美女高清一区二区三区| 久久精品人成免费| 免费播放美女一级毛片| 亚洲美女免费视频| 国产精品亚洲高清一区二区| 国产精品成人观看视频免费 | 一本岛v免费不卡一二三区| 亚洲视频国产精品| 亚洲午夜精品一级在线播放放| 久久久久久精品成人免费图片| 亚洲成人免费电影| 一区二区免费在线观看| 色婷婷亚洲十月十月色天| 久久久久亚洲爆乳少妇无| 国产精品亚洲精品久久精品 | 91视频免费网站| 亚洲乱妇老熟女爽到高潮的片| 亚洲成在人线av| 免费中文字幕一级毛片| 4hu四虎最新免费地址| a级片免费在线观看| 蜜芽亚洲av无码一区二区三区| 亚洲精品动漫在线| 久久亚洲精品成人| gogo全球高清大胆亚洲| 女人被免费视频网站| 美女视频黄免费亚洲| 久久久久久久岛国免费播放 | 亚洲夜夜欢A∨一区二区三区| 精品无码国产污污污免费|