1. 前幾天在水木上看到有人問
          class Demo>E<{
          public Class getDynamicClass(){
          Class clazz=//----------------------如何獲取E的類?
          return clazz;
          }
          }
          貌似只能這樣解決
          class Demo>E<{
          E e;
          public void addElement(E e){
          this.e = e;
          }
          public Class getDynamicClass(){
          Class clazz = e.getClass();
          return clazz;
          }
          }
          一些相關(guān)評(píng)論
          Java的范型就是半個(gè)殘廢
          nod,Java的范型除了防止類型轉(zhuǎn)換錯(cuò)誤以外我真想不起來有什么實(shí)質(zhì)的用途。
          尤其是那個(gè)文檔中說的,編譯的時(shí)候拿掉,運(yùn)行的時(shí)候再檢查...
          確實(shí)沒什么用,jg老糊涂了偏要聽信c++那個(gè)bs老頭才有這個(gè)敗筆,我一直這么認(rèn)為
          這個(gè)東西歐n年前就沒有搞出來
          還是有點(diǎn)用的,在ORM中定義多對(duì)一或者多對(duì)多關(guān)系的時(shí)候,
          List>C< numbers;
          這時(shí)候偶就知道numbers關(guān)聯(lián)的是C類,不需要在其它地方再配置了,
          為啥沒用
          否則對(duì)容器的使用還得停留在指針時(shí)代
          C#的泛型性能還是很好的,只是Java的實(shí)現(xiàn)機(jī)制那啥了點(diǎn)。。。
          最后有人回
          很多事情,不要著急下結(jié)論。以下代碼算轉(zhuǎn)載,不算原創(chuàng)。

          -------------華麗的分割線---------------------------------
          protected Class getDomainClass() {
          if (domainClass == null) {
          ParameterizedType thisType = (ParameterizedType)
          getClass().getGenericSuperclass();
          domainClass = (Class)
          thisType.getActualTypeArguments()[0];
          }
          return domainClass;
          }
          -------------華麗的分割線---------------------------------
          還沒試過可不可以
          2. 另外一個(gè)類似的帖子的回復(fù)
          System.out.println(((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]);
          試驗(yàn)了半天
          public class BaseClass>M<{
          public void showType(){
          ParameterizedType ptype = (ParameterizedType) getClass()
          .getGenericSuperclass();
          System.out.println(ptype.getActualTypeArguments()[0]);
          }
          }
          public class ExClass>M< extends BaseClass>M<{}

          new ExClass>Date<().showType(); //得到 "M" 而不是想要的 "Date" :'(

          我以前也想這么搞,可是沒搞成,后來看Java關(guān)于泛型的實(shí)現(xiàn),認(rèn)為沒希望。
          前面所說的方式只有在
          public class SomeClass extends BaseClass>AnotherClass< {...}
          這樣定義的時(shí)候才能取到AnotherClass ...
          3. 看到另一個(gè)帖子說運(yùn)行期沒有范型

          posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          關(guān)于Java的范型機(jī)制

          Posted on 2007-04-22 20:26 ZelluX 閱讀(540) 評(píng)論(0)  編輯  收藏 所屬分類: OOP
          2007-04-21 11:12:29
          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 旬阳县| 乐清市| 阿拉善左旗| 贺州市| 阳城县| 闵行区| 汤阴县| 勃利县| 拜泉县| 精河县| 湾仔区| 刚察县| 荥阳市| 洛隆县| 上虞市| 盐津县| 达拉特旗| 平远县| 手游| 遂平县| 邳州市| 金乡县| 汉中市| 林口县| 余干县| 秦安县| 西城区| 双辽市| 宁波市| 长葛市| 云安县| 菏泽市| 公安县| 建瓯市| 永吉县| 航空| 金沙县| 绵竹市| 衡山县| 富裕县| 景东|