0%

java-泛型2

泛型方法

这个东西相对而言有点小复杂,这里的话呢简单介绍一些比较常用的方式。泛型的方法的话呢其实也就是在一个类中增加一个泛型的方法,看下面的示例:

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好像和网上的代码有冲突,这里就不贴图片了。!!!

最近冠状病毒肆虐,希望大家都能够注意健康,也快过年了,希望大家都平平安安的!!!