网站建设遵循原则,网页的建设流程怎么确定,网站建设趋势,航天桥网站建设泛型
泛型的作用从使用层面上来说是统一数据类型#xff0c;防止将来的数据转换异常。从定义层面上来说#xff0c;定义带泛型的类#xff0c;方法等#xff0c;将来使用的时候给泛型确定什么类型#xff0c;泛型就会变成什么类型#xff0c;凡是涉及到泛型的都会变成确…泛型
泛型的作用从使用层面上来说是统一数据类型防止将来的数据转换异常。从定义层面上来说定义带泛型的类方法等将来使用的时候给泛型确定什么类型泛型就会变成什么类型凡是涉及到泛型的都会变成确定的类型代码更灵活。 不使用泛型少了限制则在集合添加数据就不会类型异常的错误导致运行结果出错。
public class Test {public static void main(String[] args) {ArrayList list new ArrayList();list.add(1);list.add(666);list.add(true);for (Object o : list) {String s (String) o;System.out.println(s.length());}}
}泛型中的类型必须是引用类型如果泛型不写,默认类型为Object
泛型的定义
含有泛型的类
new对象的时候确定类型格式
public class 类名E{ }public class MyArrayList E{Object[] obj new Object[5];//定义一个数组,充当ArrayList底层的数组,长度直接规定为10int size;public boolean add(E e){ //定义一个add方法,参数类型需要和泛型类型保持一致obj[size] e;size;return true;}Overridepublic String toString() {return Arrays.toString(obj);}
}public class Test {public static void main(String[] args) {StudentString list1 new Student();list1.add(张三);list1.add(李四);System.out.println(list1);//直接输出对象名,默认调用toStringStudentInteger list2 new Student();list2.add(1);list2.add(2);System.out.println(list2);}
}含有泛型的方法
调用的时候确定类型其格式
修饰符 E 返回值类型 方法名(E e)public class Student {public static E void addAll(ArrayListE list, E...e){ //定义一个静态方法addAll,添加多个集合的元素传入可变参数for (E element : e) {list.add(element);}}
}public class Test {public static void main(String[] args) {ArrayListString list1 new ArrayList();Student.addAll(list1, 张三, 李四);System.out.println(list1);ArrayListInteger list2 new ArrayList();Student.addAll(list2, 1, 2);System.out.println(list2);}
}含有泛型的接口
格式
public interface 接口名E{ }什么时候确定类型分两种一种是在实现类的时候还没有确定类型,只能在new实现类的时候确定类型了例如ArrayList。一种是在实现类的时候直接确定类型了比如Scanner。
public interface MyList E{public boolean add(E e);
}public class MyArrayListE implements MyListE{Object[] obj new Object[5];int size;public boolean add(E e){ //定义一个add方法,参数类型需要和泛型类型保持一致obj[size] e;size;return true;}Overridepublic String toString() {return Arrays.toString(obj);}
}public class Test {public static void main(String[] args) {MyArrayListString list new MyArrayList();list.add(张三);list.add(李四);System.out.println(list);}
}泛型通配符
泛型通配符使得我们能够更加灵活地处理泛型类型使代码更通用且可复用。包括以下几类 EElement (在集合中使用因为集合中存放的是元素) TTypeJava 类 KKey键 VValue值 NNumber数值类型 ?表示不确定的 java 类型
public class Test {public static void main(String[] args) {ArrayListString list1 new ArrayList();list1.add(张三);list1.add(李四);ArrayListInteger list2 new ArrayList();list2.add(1);list2.add(2);test(list1);test(list2);}public static void test(ArrayList? list){ //表示不确定的 java 类型for (Object o : list) {System.out.println(o);}}
}泛型的上限下限
泛型的上下限可以规定泛型的范围 上限?只能接收extends后面的本类类型以及子类类型 格式? extends 类型 下限?只能接收super后面的本类类型以及父类类型 格式? super 类型 Integer的父类Number Number的父类Object