java基础——泛型解析
来源:互联网 发布:熊猫安全软件 编辑:程序博客网 时间:2024/05/16 11:07
泛型,编写的代码可以被很多不同类型的对象重用。简单泛型类的定义:
public class Generic<T> {public Generic(){this.info = null;}public Generic(T info){this.info = info;}public void setInfo(T info){this.info = info;}public T getInfo(){return this.info;}private T info;}
用具体的类型替换类型变量(T)就可以实例化泛型类型:
为了更好的呈现泛型的原型首先新建一个student类:
public class Student {public Student(){this.name = null;this.tall = 0;}public Student(String name,int tall){this.name = name;this.tall = tall;}public int getTall(){return this.tall;}public String getName(){return this.name;}public void getDescription(){System.out.println("学生:"+this.getName()+"\n身高:"+this.getTall()+"cm");}private String name;private int tall;}
主类:
public class test { public static void main(String[] args){ /**************使用自定义泛型类*******************/ Student s = new Student("小卓",165); Generic<Student> info = new Generic<Student>(s); s.getDescription(); }}
结果:
学生:小卓身高:165cm
注:也可以在普通类型中定义泛型方法
我们还可以对类型变量(T)进行限定,例如使T必须继承Comparable接口,这样才能对其数组进行排序:
public class Generic<T extends Comparable> { ... ...}
当你定义了例子中的Generic泛型类后,你可以使用:
public class test { public static void main(String[] args){ /**************使用自定义泛型类的原型*******************/ Student s = new Student("小卓",165); Generic info_raw = new Generic(s); Object ob = info_raw.getInfo(); Student student = (Student)ob; student.getDescription(); }}
结果如上
这里没有使用<>传入对象类型,实例化时将结果进行了类型转换。泛型类的原型即将泛型中的T替换为了Object。
所有的类型查询只产生原始类型(以上面的s为例):
if(s instanceof Generic<Student>) //it's true
if(s instanceof Generic<String>) //it's also true
他们都是Generic类型
getClass方法总是返回原始类型:
Generic<Student> student = new Generic(....)
Generic<String> string= new Generic(....)
if(student .getClass() == string.getClass()) //true
使用泛型时需要注意:
1、不能抛出也不能捕泛型类实例
2、参数化类型的数组不合法
3、不能实例化类型变量
0 0
- java基础——泛型解析
- Java基础全面解析——Java语言基础
- 转-Java基础全面解析——Java语言基础
- JAVA基础——XML解析
- Java 基础——数组解析
- Java 基础——数组解析
- Java基础——异常解析
- Java基础——volatile关键字解析
- JAVA基础——深度解析Java内存原型
- java基础——XML和DOM解析
- JAVA基础——使用DOM4J 解析xml
- Java基础深入解析——类与对象
- java基础第八讲——URL、XML的解析
- java基础学习笔记——集合解析
- Java 基础——日期(Date)的解析
- 框架基础——全面解析Java注解
- Java基础--关键字解析
- Java多线程基础解析
- JSF学习前应做的准备以及准备中经常遇到的问题
- Ceph搭建过程中遇到的各种问题
- 数组中排序的一些方法,选择排序,冒泡排序,和数组中自己的方法
- PHP 时间操作(获取一周前、明天的日期)
- Java学习提要——方法引用
- java基础——泛型解析
- bloger测试
- 授权的过程和原则
- Spring笔记(三):Aop详解
- RecyclerView 实现横向滚动效果
- 0827考试总结
- 将任意Java对象RDD转换成DataFrame
- Nginx的启动、关闭和重启
- angularjs->服务