JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java SE 討論區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Re:J2SE 1.5 的新特点 [Re:subbug]
popcorny

Jakarta 2%

版主

發文: 752
積分: 20
於 2003-08-07 10:50 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我有左右手...
可以各拿一樣東西
(所以我的左右手可以當做一個容器)
我把他叫做Hands
我女朋友要叫我提東西...
1
2
3
Hands<Gucci, LV> hands = new Hands<Gucci, LV>();
hands.putLeft(new Gucci("1234"));
hands.putRight(new LV("1234"));

這個程式會產生compile error嘛???

給你偷喵一下我的原始定義,
注意..我定義故意左右相反 所以程式會產生compile-time error
1
2
3
4
5
6
public class Hands <Right, Left>{
     private Left left;
     private Right right;
     public void putLeft(Left right){..}
     public void putRight(Right right){..}
}

可是我的左右手已經被拿來當作工具了
所以被compile成library使用了
變成bytecode格式..(再反組譯回來)
1
2
3
4
5
public class Hands{
    ....
    public void putLeft(Object left){...}
    public void putRight(Object right){..}
}

這時候compiler看到這個資訊(在只有bytecode的前提下)
他怎麼知道要把第一個actual type "Gucci"要bind到Right這個type
而要把第二個actual type "LV"要bind到Left這個type
Note:我不是要像c++一樣產生一個新的class像這樣
1
2
3
4
5
public class Hands@12345{
     ....
     public void putLeft(LV left){...}
     public void putRight(Gucci right){...}
}

而是希望他把我轉成
1
2
3
4
5
public class Hands{
     ....
     public void putLeft(Object left){...}
     public void putRight(Object right){...}    
}

然後他幫我發現以下這段code有compile-time error
1
2
Hands<Gucci, LV> hands =...
hands.putLeft("hahaha");

Comilpe 1 error
incompatible type: class java.lang.String can not cast to class LV

我的問題來了
他要怎麼知道當我呼叫
hands.putLeft( something );
我要先去check something是LV此type..
而非Gucci此type...
若我寫
hands.putLeft("hahaha");
我們會想說他會丟出compile error
incompatible type: class java.lang.String can not cast to class LV
但是他又怎麼知道丟進去的type要是LV而非Gucci此type

Hands<Gucci, LV> hands; 這個定義compiler就知道
hands.putLeft( 這裡要丟LV此type );
這是哪們子的AI
就算有AI, 笨一點的還以為左邊是Gucci type, 右邊是LV type
我還故意把他寫相反位置勒...

在bytecode level每個generic-type都是長的是Object樣
compiler有怎麼知道哪個Object type要map到Gucci
哪個Object type要map到LV
哪個要根本就是Object而非generic-type
沒有這些資訊... 無法做compile-time type checking...

講了一大堆 有人知道我再講什麼嘛 >"<


popcorny edited on 2003-08-07 11:59
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
16269 [精華] J2SE 1.5 的新特点 subbug 2433 2003-08-02 09:30
15091 Re:J2SE 1.5 的新特? piggy 311 2003-08-02 11:53
15261 Re:J2SE 1.5 的新特点 saijone 3765 2003-08-02 22:52
13838 Re:J2SE 1.5 的新特点 Duncan 689 2003-08-06 22:58
13691 Re:J2SE 1.5 的新特点 popcorny 1058 2003-08-06 23:17
13581 Re:J2SE 1.5 的新特点 tempo 667 2003-08-06 23:28
13586 Re:J2SE 1.5 的新特点 popcorny 675 2003-08-07 00:18
13776 Re:J2SE 1.5 的新特点 Duncan 1016 2003-08-07 00:35
14381 Re:J2SE 1.5 的新特点 popcorny 933 2003-08-07 00:57
13538 Re:J2SE 1.5 的新特点 Duncan 699 2003-08-07 08:59
13362 Re:J2SE 1.5 的新特点 tempo 387 2003-08-07 01:15
13565 Re:J2SE 1.5 的新特点 saijone 1722 2003-08-07 03:20
13330 Re:J2SE 1.5 的新特点 worookie 458 2003-08-07 05:56
13511 Re:J2SE 1.5 的新特点 Duncan 894 2003-08-07 09:06
13185 Re:J2SE 1.5 的新特点 worookie 149 2003-08-07 09:20
13462 Re:J2SE 1.5 的新特点 Duncan 194 2003-08-07 09:24
13200 Re:J2SE 1.5 的新特点 worookie 191 2003-08-07 09:34
13312 Re:J2SE 1.5 的新特点 saijone 660 2003-08-07 10:49
13494 Re:J2SE 1.5 的新特点 popcorny 267 2003-08-07 10:58
13185 Re:J2SE 1.5 的新特点 tempo 845 2003-08-07 11:27
13667 Re:J2SE 1.5 的新特点 Dream 1620 2003-10-05 01:56
13676 Re:J2SE 1.5 的新特点 Duncan 882 2003-08-07 00:21
13357 Re:J2SE 1.5 的新特点 tempo 434 2003-08-07 01:22
13251 Re:J2SE 1.5 的新特点 worookie 104 2003-08-07 02:04
13303 Re:J2SE 1.5 的新特点 popcorny 147 2003-08-07 11:02
13208 Re:J2SE 1.5 的新特点 tempo 157 2003-08-07 11:20
13102 Re:J2SE 1.5 的新特点 worookie 144 2003-08-07 14:04
13281 Re:J2SE 1.5 的新特点 worookie 169 2003-08-07 02:24
13341 Re:J2SE 1.5 的新特点 worookie 246 2003-08-07 01:29
13492 Re:J2SE 1.5 的新特点 popcorny 1947 2003-08-07 10:50
13269 Re:J2SE 1.5 的新特点 tempo 811 2003-08-07 11:19
14708 Re:J2SE 1.5 的新特点 saijone 764 2003-08-07 12:12
» JWorld@TW »  Java SE 討論區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8