開發(fā)出高質(zhì)量的系統(tǒng)
在這篇文章中用Jad說明了JDK1.5中的泛型是擦拭法實(shí)現(xiàn),實(shí)際是通過編繹前處理,或者編譯器實(shí)現(xiàn)的。但有人說Jad還不支持1.5的語法,那么從另一個角度證明一下,就有了這篇文章。
posted on 2006-11-10 13:05 dreamstone 閱讀(3624) 評論(5) 編輯 收藏 所屬分類: jdk相關(guān)
對,對。就是擦拭法。編譯時大部分元信息被擦拭了,不過繼承和泛型方法的Generic Type還可以在編譯后獲取回來,這就挺夠用了,但是夠Tricky。 回復(fù) 更多評論
嗯,不過Java的實(shí)現(xiàn)方式導(dǎo)致的一個結(jié)果就是泛型只簡化了代碼,并沒有提高效率。但是dot net利用C++類似的template的方式來實(shí)現(xiàn),效率提升很大。 回復(fù) 更多評論
有沒有效率提升測試了才知道.. 回復(fù) 更多評論
經(jīng)過實(shí)際測試發(fā)現(xiàn),JDK1.5泛型 確實(shí)比以前效率有所提升 代碼如下:(這是沒有采用泛型的代碼,采用泛型只要改三個地方然后在測試) public static void main(String[] args){ //--測試JDK1.4 和 JDK5的性能... System.out.println(NormMisc.getStDateTime()); long startime = 0; long ttime = 0; for(int j=0;j<30;j++){ startime = System.currentTimeMillis(); for(int ii=0;ii<5000;ii++){ ArrayList l = new ArrayList(); for(int i=0;i<10;i++){ Car c = new Car(); c.setDesc("Desc");c.setName("name-"+i);c.setNumber("Number"); l.add(c); } for(int i = 0;i<l.size();++i){ Car c = (Car)l.get(i); String cs = c.toString(); //System.out.println(cs); } l.clear(); } ttime += (System.currentTimeMillis()-startime); } System.out.println(NormMisc.getStDateTime()); System.out.println("平均時間:"+ttime/10); } } class Car{ private String name; private String number; private String desc; /** * @return desc */ public String getDesc() { return desc; } /** * @param desc 要設(shè)置的 desc */ public void setDesc(String desc) { this.desc = desc; } /** * @return name */ public String getName() { return name; } /** * @param name 要設(shè)置的 name */ public void setName(String name) { this.name = name; } /** * @return number */ public String getNumber() { return number; } /** * @param number 要設(shè)置的 number */ public void setNumber(String number) { this.number = number; } public String toString(){ return "name "+name+",number "+number+",desc "+desc; } } 回復(fù) 更多評論
@a 先不管你這段代碼寫的如何,邏輯上就有問題,jdk1.5編繹后比jdk1.4運(yùn)行快就一定是因?yàn)榉盒蛦幔? 就用你這段代碼,不使用泛型的情況下,你用jdk1.4和 jdk1.5分別編繹運(yùn)行一下看到差別了吧。差別不是因?yàn)榉盒?,而是因?yàn)閯e的原因。不要只看表面現(xiàn)象,要知到原因。 回復(fù) 更多評論
Powered by: BlogJava Copyright © dreamstone