泛型
好处:
1.可以将运行时出现的问题提前到编译时(限制添加元素的类型)
2.避免了无谓的强制转换
泛型的应用
1. ArrayList<String> list = new ArrayList<String>(); true
2. ArrayList<Object> list = new ArrayList<String>(); false
3. ArrayList<String> list = new ArrayList<Object>(); false
4. ArrayList list = new ArrayList<String>(); true
5. ArrayList<String> list = new ArrayList(); true
//2和3错误原因:在泛型中没有多态的概念,两边的泛型数据必须一致
//4和5正确原因:考虑到新老系统的兼容性的
自定义泛型:
可以理解为一个数据类型的占位符,或则理解为时一个数据类型的变量
泛型方法:
泛型方法的定义格式:
修饰符 <声明自定义泛型> 返回值类型 函数名 (形参列表。。)
public <ABC> ABC add(ABC arg0){}
泛型方法的注意事项:
1.在方法上的自定义泛型的具体数据类型时调用该方法的时候传入实参的时候确定的
2.自定义泛型使用的标识符只要符合标识符的命名规则即可
TIM图片20191009214645.png
TIM图片20191009214848.jpg
泛型类:
泛型类的定义格式:
class 类名<声明自定义泛型>{}
class MyList<T>{}
泛型类的注意事项:
1. 在类上自定义泛型的数据类型时在创建类的对象的时候确定的
2. 在类上自定义了泛型,如果创建该类的对象时没有指定泛型的具体类型,则默认是Object类型
泛型接口:
泛型接口的定义格式:
interface 接口名<声明自定义泛型>
public Demo<String> interface Dao<String>{}
泛型接口的注意事项:
1.在接口上自定义泛型的具体数据类型时在实现该接口时指定的
2.如果一个接口自定义了泛型,在实现该接口时没有指定具体数据类型,则默认是Object类型
如果想在创建接口实现类对象的时候再指定接口自定义泛型的具体类型,那么应该类和接口都使用自定义泛型
public Demo<T> interface Dao<T>{}
网友评论