东莞网站建设方案表,网站建设是什么职位,网页制作模板和库的联系与区别,优化方案的格式及范文泛型深入
泛型#xff1a;可以在编译阶段约束操作的数据类型#xff0c;并进行检查
泛型的格式#xff1a;数据类型
注意#xff1a;泛型只能支持引用数据类型
//没有泛型的时候#xff0c;集合如何存储数据//如果我们没有给集合指定类型#xff0c;默认认为…泛型深入
泛型可以在编译阶段约束操作的数据类型并进行检查
泛型的格式数据类型
注意泛型只能支持引用数据类型
//没有泛型的时候集合如何存储数据//如果我们没有给集合指定类型默认认为所有的数据类型都是Object类//此时可以在集合添加任意的数据类型//带来一个坏处我们在获取数据的时候无法使用他的特有行为//此时推出了泛型可以在添加数据的时候将数据类型统一//而且让我们获取数据的时候也可以进行强转//1.创建集合ArrayList list new ArrayList();//2.添加数据list.add(123);list.add(aaa);System.out.println(list);//3.遍历集合Iterator iterator list.iterator();while (iterator.hasNext()){Object next iterator.next();//多态的弊端是无法访问子类的特有功能System.out.println(next);}
} 泛型的好处
同意数据类型。把运行时期的问题提前到了编译期间避免了强制类型转换可能出现的异常因为在编译阶段类型就能确定下来 Java中的泛型都是伪泛型 泛型的细节
泛型中不能写基本数据类型
指定泛型的具体类型后传递数据时可以传入该类类型或者其子类类型
如果不写泛型类型默认为Object 泛型可以在很多地方进行定义
类后面 泛型类
当一个类中某个变量的数据类型不确定时就可以定义带有泛型的类
/*当我在编写一个类的时候不确定类型那么这个类型就可以定义为泛型类
* */
public class MyGenericsE {Object[] obj new Object[10];int size;/*E: 表示不确定的类型该类型在类名后面定义过* */public boolean add(E e) {obj[size] 0;size;return true;}public E get(int index) {return (E) obj[index];}Overridepublic String toString() {return Arrays.toString(obj);}
} public static void main(String[] args) {MyGenericsString list new MyGenerics();list.add(aaa);list.add(bbb);list.add(ccc);list.add(ddd);// System.out.println(list);} 方法上面 泛型方法
方法中形参的类型不确定时可以使用类名后面定义的泛型E
public class ListUtil {private ListUtil(){}//类中定义一个静态方法addAll用来添加多个集合的元素/*参数一集合参数二元素*/public static E void addAll(ArrayListE list,E e,E e2,E e3,E e4){list.add(e);list.add(e2);list.add(e3);list.add(e4);}
} public class Demo3 {public static void main(String[] args) {ArrayListString list new ArrayList();ListUtil.addAll(list, a, b, c, d);System.out.println(list);}
}接口后面 泛型接口
如何使用
方式1实现类给出具体类型 方式2实现类延续泛型创建对象时在确定