寫程序,做產品,過日子

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

          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 閱讀(2525) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 大安市| 武川县| 昆山市| 通海县| 澄江县| 搜索| 昌图县| 谷城县| 军事| 高碑店市| 深圳市| 安图县| 湘潭市| 威信县| 同德县| 河西区| 中阳县| 新乐市| 紫云| 威信县| 宁都县| 赤城县| 格尔木市| 舟山市| 长岭县| 改则县| 南召县| 杂多县| 天长市| 北辰区| 郧西县| 酉阳| 山东省| 道孚县| 阳原县| 柘荣县| 洪雅县| 玛曲县| 塘沽区| 伊金霍洛旗| 那曲县|