美文网首页
Java-泛型方法

Java-泛型方法

作者: hello_world_cxm | 来源:发表于2021-01-01 21:29 被阅读0次

package Hello1;
import java.util.List;
import java.util.ArrayList;
public class Test8 {
//需求假如我要将一个数组类型的所有元素复制到集合中,怎么写
//更进一步,如果我想要对T的类型做出限制,怎么限制
public static void main(String[] args) {
Test8 t8 = new Test8();
List<String> l1 = new ArrayList<>(); //泛型两边都要保持一致 右边可以不写
List<Number> l2 = new ArrayList<>();
List<Integer> l3 = new ArrayList<>();
List<Double> l4 = new ArrayList<>();
List<Comparable> l5 = new ArrayList<>();
copy(new String[]{}, l1); //定义字符串类型的数组 然后赋值给os
copy(new Number[]{}, l2); //定义字符串类型的数组 然后赋值给os
copy(new Integer[]{}, l3); //定义字符串类型的数组 然后赋值给os
copy(new Double[]{}, l4); //定义字符串类型的数组 然后赋值给os
copy(new Comparable[]{}, l5); //定义字符串类型的数组 然后赋值给os
copy(new Double[]{}, l4); //定义字符串类型的数组 然后赋值给os
//这时候list类型是String,但是Object[] os则是Double类型,但是此时String对象是不能被放进Double数组的
//所以如下面那种方法是编译错误的

}
static <T extends Number & Comparable> void copy(T[] os,List<T> list) {
//static <T super Number> void copy(T[] os,List<T> list) {  //编译错误 ,super只能用在泛型通配符上,不能用在泛型方法上

// static <T extends Number> void copy(T[] os,List<T> list) { //Number和子类都能通过
//用字母T要约束数组os和集合list的类型 T可以是其他的字母,但是习惯用大写T
//假如T是String类型,那么其余所有的T都是String类型,这就解决了基本需求
for(T o: os) { //遍历
list.add(o);
}
}
// static <T> void copy(T[] os,List<T> list) {
// //用字母T要约束数组os和集合list的类型 T可以是其他的字母,但是习惯用大写T
// //假如T是String类型,那么其余所有的T都是String类型,这就解决了基本需求
// for(T o: os) { //遍历
// list.add(o);
// }
// }
// static void copy(Object[] os,List<?> list) { //Object[] 表示Object类型的数组
// //问题:如果用通配符通配所有类型的集合,add方法明显是编译出错的
// //理由:编译器看来list是有泛型的,所以不确定os数组,是否都能符合泛型要求 所以报错
// //思路:所以得让数组类型与泛型类型是一致的
// for(Object o: os) { //遍历
// list.add(o);
// }
// }

}

相关文章

  • JAVA-泛型

    JAVA-泛型 sschrodinger 2018/11/15 简介 泛型是Java SE 1.5的新特性,泛型的...

  • Java-泛型方法

    package Hello1;import java.util.List;import java.util.Arr...

  • Java-泛型方法1

  • Java 泛型

    泛型类 例如 泛型接口 例如 泛型通配符 泛型方法 类中的泛型方法 泛型方法与可变参数 静态方法与泛型 泛型上下边...

  • 泛型的使用

    泛型有三种使用方式,分别为:泛型类、泛型接口、泛型方法 泛型类 泛型接口 泛型通配符 泛型方法 静态方法与...

  • Java-泛型

    今天记录一下Java中的泛型,毕竟大家在项目中经常用到或者看到过。参考:https://www.jianshu.c...

  • Java-泛型

    day02【Collection、泛型】 主要内容 Collection集合 迭代器 增强for 泛型 教学目标 ...

  • Java-泛型

    1、泛型概念 java 泛型,是java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被...

  • Java-泛型

    - 1.泛型定义 - 2.泛型使用 - 3.泛型上下边界 - 4.JVM如何实现的泛型?   1、定义 Jdk1....

  • Java-泛型

    关键字:泛型、类型擦除、泛型实现、泛型缺点、泛型运用。 1.不使用泛型会怎么样? 例子1,int、String元素...

网友评论

      本文标题:Java-泛型方法

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