Java复习之泛型
2017-03-06 14:09
183 查看
这篇博客主要是用来复习一下Java中的泛型。
1.没有泛型的日子
在不知道数据的类型的前提之下,就进行数据类型的转换,就会产生
类型转换的异常。
2.泛型
JDK1.5之后出现了新的技术—泛型,此技术的最大的特点就是类中的属性的类型可以又外部决定,而且在声明类的时候应该采用如下的形式:
class 类名称<泛型类型,泛型类型,…>
{
}
定义数组不能使用泛型
使用泛型注意的两个问题:
(1)在构造方法上使用泛型
(2)如果在使用的时候没有指定泛型,则表示擦除泛型。泛型一旦擦除之
后,将按照Object进行接收,以保证程序不会出现任何错误
3.通配符
问题:
参数化的类型不同,两个对象不能相互赋值
“?”的意思表示接受任意的泛型类型,但是只是接收输出,并不能修改。
4.泛型接口
泛型不光可以在类上使用,还可以在接口中进行定义。操作的语法如下:
interface 接口名称<泛型类型,泛型类型,…>{}
5.泛型方法
泛型除了在类中定义之外,还可以在方法上定义,而且在方法上定义使用泛型,此方法所在的类不一定是泛型的操作类。
定义一个方法,实现任意类型数组中两个位置值的调换
Demo:
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基础复习:泛型
- 黑马程序员--java基础复习之泛型
- Java复习笔记---泛型
- JAVA复习之泛型
- Java复习笔记(9)——泛型
- java再复习——通过反射获取到方法的参数和返回值的泛型类型
- java复习-泛型
- java 泛型复习
- 复习(数据结构:java):线性表(数组):泛型的写法
- JAVA基础复习十六-LinkedList、栈和队列数据类型、泛型、增强for循环、可变参数、Arrays工具类
- java再复习——泛型使用语法上的一些坑
- 黑马程序员--JAVA基础复习之泛型
- java基础复习(集合、泛型、IO流、多线程、Junit 、内省 、Properties、 路径问题)
- 小码哥杯java程序比赛复习(十三)集合和泛型(中)
- java再复习——自定义泛型方法
- Java复习笔记+经验总结-06 多线程 泛型 反射
- Java复习笔记—泛型
- java再复习——泛型
- JAVA基础复习(三)泛型的使用
- 黑马程序员——java复习总结——泛型和Map