泛型方法
这个东西相对而言有点小复杂,这里的话呢简单介绍一些比较常用的方式。泛型的方法的话呢其实也就是在一个类中增加一个泛型的方法,看下面的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class Test { public static void main(String agrs[]) { double a = 100; ceshi tCeshi = new ceshi(); System.out.print("值:"+tCeshi.<Double>getString(a)); }
} class ceshi { public <T> String getString(T a) { return a.toString(); } }
|
可以看出,其实那个尖括号里面的类型就是用来定义参数类型的。
而且这里,静态方法需要再次声明,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class Test { public static void main(String agrs[]) { int a = 100; ceshi <Integer> tCeshi = new ceshi(); tCeshi.p(a); }
} class ceshi <T> { private T aT; public static <T> void p(T a) { System.out.print(a); } }
|
就像是这个样子,静态方法需要再次定义。
泛型可变参数方法
其实大同小异啦,主要还是要说一下是哪个类型:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public class Test { public static void main(String agrs[]) { int a = 100; ceshi <Integer> tCeshi = new ceshi(); tCeshi.p(a,500,600,900); }
} class ceshi <T> { public <T> void p(T... a) { for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } } }
|
泛型上下边界
这个东西就是一个定义,其实也不难理解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public class Test { public static void main(String agrs[]) { ceshi <Son> tCeshi = new ceshi(); tCeshi.p(500,600,900); }
} class ceshi <T extends fa> { public <T> void p(T... a) { for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } } } class fa { } class Son extends fa { }
|
其实仔细看看就是对于我们传入的类型界定一下。
泛型数组
这个东西有点乱,看了一大顿也不是十分透彻,简单的总结一下。
1.不能和创建一个确切的泛型类型数组
可以看到这个样子是不行的,
那么我们只能这个样子,使用通配符。
但是在最后,取出数据是要做显式的类型转换的。
但是我的JDK好像和网上的代码有冲突,这里就不贴图片了。!!!
最近冠状病毒肆虐,希望大家都能够注意健康,也快过年了,希望大家都平平安安的!!!