美文网首页
请不要在新代码中使用原生态类型

请不要在新代码中使用原生态类型

作者: 没走过的二丁目 | 来源:发表于2018-07-26 15:55 被阅读0次

声明中具有一个或者多个类型参数(type parameter)的类或者接口,就是泛型( generic)类或者接口。

泛型类和泛型接口统称为泛型( generic type)。

每种泛型都可以定义一组参数化的类型(parameterized type)
构成格式:类(接口)名<参数类型>。

每种泛型都定义一个原生态类型(raw type),即不带任何实际类型参数的泛型名称。

如果使用原生态类型,就失掉了泛型在安全性和表述性方面的所有优势。

出错之后应该尽快发现,最好是在编译时就发现。

1、使用泛型后,就可以很快的发现错误。

2、使用泛型后,删除元素就不需要进行手工转换了。如下代码:

public void test(){
        MyList<MyItem> myItemMyList=new MyList<MyItem>();
        myItemMyList.add(new MyItem1("123"));//error
    }
public class MyList<E> {
 
   private E e;
 
    public MyList () {
    }
 
    public void add(E e){
        this.e=e;
    }
 
    public E getMyList(){
        return e;
    }
 
}
 
public class MyItem1 {
    private String name;
 
    public MyItem1(String name) {
        this.name=name;
    }
}
 
public class MyItem {
    private String name;
 
    public MyItem (String name) {
       this.name=name;
    }
}

如果不提供参数类型,使用集合类型和其他泛型也仍然是合法的,但不应该这么做。如果使用原生态类型,就失掉了泛型在安全性和表述性方面的所有优势。

原生态类型List和参数化类型List<Object>之间有什么区别?

前者逃避了泛型检查,后者则明确告知编译器,它能够持有任意类型的对象。

你可以将List<String>传递给类型List的参数 却不能传递给类型List<Object>的参数。因为,泛型有子类型化的规则,List<String>是原生态类型List的一个子类型,而不是参数化类型List<Object>的子类型(见第25条)。

如果使用像List这样的原生类型,就会失掉类型安全性,但是如果使用像List<Object>这样的参数化类型,则不会。

相关文章

  • Effective Java-泛型

    请不要在新代码中使用原生态类型 如果使用像List这样的原生态类型,就会失掉类型安全性,但是如果使用像List 这...

  • EffectiveJava第5章-泛型

    第23条:请不要在新代码中使用原生态类型 类型参数:List中的E就是类型参数,表示列表中的元素类型参数化类...

  • EffectiveJava-4-泛型

    请不要在新代码中使用原生态类型 - 如不要使用List,而是使用List(泛型),形式类型参数E表示列表的元...

  • Effective Java(四) 泛型

    泛型 Tip-23 请不要在新代码中使用原生态类型 java1.5 版本后 就不要使用 List 而是 使用 Li...

  • 泛型

    23,请不要在新代码中使用原生态类型 声明中具有一个或多个类型参数的类或接口,就是泛型类或者接口。泛型类和接口统称...

  • effective java 第五章 (笔记)

    第5章 泛型 java 1.5增加了泛型。 *** 第23条:请不要在新代码中使用原生态类型 *** 泛型类和接口...

  • 请不要在新代码中使用原生态类型

    声明中具有一个或者多个类型参数(type parameter)的类或者接口,就是泛型( generic)类或者接口...

  • Effective java笔记(四),泛型

    泛型为集合提供了编译时类型检查。 23、不要在代码中使用原生态类型 声明中具有一个或多个类型参数的类或接口统称为泛...

  • 第23条 请不要在新代码中使用原生态类型

    声明中具有一个或者多个类型参数的类或者接口,就是泛型类或者接口。没有使用泛型的类型就是原生态类型。 每种泛型定义一...

  • 第23条:请不要在新代码中使用原生态类型

    术语介绍:声明中具有一个或者多个类型参数的类或者接口,就是泛型类或者接口。例如:List接口就有单个参数类型E,表...

网友评论

      本文标题:请不要在新代码中使用原生态类型

      本文链接:https://www.haomeiwen.com/subject/mfdjmftx.html