寫程序,做產品,過日子

          成功其實很簡單,就是強迫自己堅持下去

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            69 Posts :: 1 Stories :: 92 Comments :: 0 Trackbacks

          1、不得在超類中使用通配符,例如

          public class PojoModelTree extends IdentifiableTree<? extends PojoModel>

          錯誤信息如下:

          The type PojoModelTree cannot extend or implement IdentifiableTree<? extends PojoModel>. A
          supertype may not specify any wildcard

          2、只有<? super Type>,沒有<E super Type>

          正確用法:TreeNode<? super Node> getTree()

          錯誤用法 <E super Node> E getParent();

          3、函數返回值類型不應使用通配符:

          錯誤用法:TreeNode<? extends T> getChildNode(String pKey)

          這種用法本身無錯,但在賦返回值給其它變量時會報類型不匹配。

          正確用法:<N extends T> TreeNode<N> getChildNode(String pKey)

          4、帶通配符的泛型集合不能使用add方法。不帶通配符的泛型集合也可接收子類元素。

          錯誤用法:

          List<? extends Number> list1 = new ArrayList<Number>();
          list1.add(new Integer(11)); // 類型不匹配。

          第二行報錯為:

          The method add(capture#1-of ? extends Number) in the type List<capture#1-of ? extends
          Number> is not applicable for the arguments (Integer)

          正確用法:

          List<Number> list1 = new ArrayList<Number>();
          list1.add(new Integer(11));

          顯然,在泛型的檢查之下,仍可向集合中添加指定泛型的子類元素。以下代碼也是合法的:

          List<Number> list1 = new ArrayList<Number>();
          list1.add(new Integer(11));
          List<Integer> list2 = new ArrayList<Integer>();
          list2.add(33);
          list2.add(44);
          list1.addAll(list2);

          但是,如果寫list1=list2就不合法了。

          Technorati : ,

          posted on 2007-06-20 09:37 Welkin Hu 閱讀(2519) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 芒康县| 新源县| 四子王旗| 扎兰屯市| 区。| 驻马店市| 平塘县| 呼伦贝尔市| 平湖市| 富裕县| 类乌齐县| 吴旗县| 临漳县| 图木舒克市| 宁晋县| 页游| 易门县| 洪湖市| 宜丰县| 宁安市| 巴青县| 龙口市| 游戏| 罗田县| 龙南县| 合阳县| 高安市| 治多县| 黑龙江省| 奇台县| 远安县| 和龙市| 吴堡县| 霸州市| 邵阳县| 加查县| 深水埗区| 新绛县| 界首市| 茶陵县| 称多县|