锁定老帖子 主题:你能用Wapper来做什么?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-23
从简单的说起: public class Wrapper<T extends Object> { public T object; public Wrapper() { object = null; }; public Wrapper(T object) { this.object = object; } } 下面我们看看一个从内部类获得副作用的例子: final Wrapper<String> wrapper = new Wrapper<String>(); Display.getDefault().syncExec(new Runnable() { public void run() { wrapper.object = ....; } } 我们可以成功的从一个内部类中获得我们需要的数据。
void swap(int a,int b){ int temp = a; a = b; b = temp; } 这个简单的swap函数不起作用的,而java等语言参数传递只支持值传递, void swap(Object a,Object b){ Object temp = a.value; a.value = b.value; b.value = temp; } String a = "abc"; String b = "bcd"; Wrapper<String> wrapperA = new Wrapper<String>(a); Wrapper<String> wrapperB = new Wrapper<String>(b); swap(wrapperA,wrapperB); 在用javascript写XPCOM的时候,数组及其大小作为返回值(由于idl与实现语言无关, idl: void getArray(out unsigned long count,[retval, array, size_is(count)] out string aArray); js实现:
getArray: function(aCount){ aCount.value = this.aArray.length; return this.aArray; };
使用方法: var aCount = {};一个Wapper var array = xx.getArray(aCount); xxx.alert(aCount.length); 二、控制实例产生的个数/生命周期: public class Singleton{ private static Singleton instance = new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return instance; } } 这个Wrapper或许有点特别,自己Wrapper自己,来控制实例产生的个数/生命周期。 var catman = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager); catman.addCategoryEntry("JavaScript global property", CLASS_NAME, CONTRACT_ID, true, true); 来注册。 getPostData: function(aCount){ //在XPCOM中getService每次使用一个实例,而createInstance每次创建一个实例 var nsPostDataManager = Cc["@ibm.com/nspostdatamanager;1"].getService(Ci.nsIPostDataManager); return nsPostDataManager.getPostData(aCount); }, clearRequests: function(){ var nsPostDataManager = Cc["@ibm.com/nspostdatamanager;1"].getService(Ci.nsIPostDataManager); return nsPostDataManager.clearRequests(); } 这时候把nsPostDataService注册成网页全局访问的就可以了。 三、控制对象的访问: Extension Object模式则可以为Object动态添加新的行为而不改变已有的接口,然后Query到需要的接口,使用新行为。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 2682 次