您的位置:首页 > 编程语言 > Java开发

Java复习之泛型

2017-03-06 14:09 183 查看
这篇博客主要是用来复习一下Java中的泛型。

1.没有泛型的日子

在不知道数据的类型的前提之下,就进行数据类型的转换,就会产生

类型转换的异常。

2.泛型

JDK1.5之后出现了新的技术—泛型,此技术的最大的特点就是类中的属性的类型可以又外部决定,而且在声明类的时候应该采用如下的形式:

class 类名称<泛型类型,泛型类型,…>

{

}

定义数组不能使用泛型

使用泛型注意的两个问题:

(1)在构造方法上使用泛型

(2)如果在使用的时候没有指定泛型,则表示擦除泛型。泛型一旦擦除之

后,将按照Object进行接收,以保证程序不会出现任何错误

3.通配符

问题:

参数化的类型不同,两个对象不能相互赋值

Children<Object>  c1=new Children<Object>();
Children<Integer> c2=new Children<Integer>();
c1=c2;  //此时无法转换


“?”的意思表示接受任意的泛型类型,但是只是接收输出,并不能修改。

4.泛型接口

泛型不光可以在类上使用,还可以在接口中进行定义。操作的语法如下:

interface 接口名称<泛型类型,泛型类型,…>{}

5.泛型方法

泛型除了在类中定义之外,还可以在方法上定义,而且在方法上定义使用泛型,此方法所在的类不一定是泛型的操作类。

定义一个方法,实现任意类型数组中两个位置值的调换

public static <T> T[]func(T[]array,int i,int j)
{
T temp=array[i];
array[i]=array[t];
array[t]=temp;
return array;
}


Demo:

public class GenericDemo {
public static void main(String args[])
{
Children<Integer> children=new Children("小小白",3);
Children <Float>children1=new Children("小小黑",1.6f);

int age=(Integer) children.getAge();
System.out.println(children.getName()+"的年龄是"+age);
//这句代码会发生类型转换异常,也就是说当我们不知道之前的
//类型而进行随意转换的话,有可能发生类型转换异常
float age2=children1.getAge();
System.out.println(children.getName()+"的年龄是"+age2);
print(children1);
print(children);

//使用泛型方法
String names[]={"小白","峰峰"};
names=fun(names,0,1);
for (String s:names
) {
System.out.println(s);
}
}

//使用通配符,定义参数,接收任意参数类型,只能输出,不能修改
public static void print(Children<?> children)
{
System.out.println("我的年龄是"+children.getAge());
}

//使用泛型的函数
public static <T> T[] fun(T[] array,int i,int t)
{
T temp=array[i];
array[i]=array[t];
array[t]=temp;
return array;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java