1. 泛型类的概述和使用

泛型类用法一:

下面我们首先定义泛型类:

 package cn.itcast_04;

 /*
* 泛型类:把泛型定义在类上
*/
public class ObjectTool<T> { //这里的<T>就像一个参数一样,现在还不确定这个泛型的类型是什么,之后创建对象或者调用方法的时候才会知道
private T obj; public T getObj() {
return obj;
} public void setObj(T obj) {
this.obj = obj;
}
}

接下来我编写测试类应用上面的泛型类 ObjectTool<T>:

 package cn.itcast_04;

 /*
* 泛型类的测试
*/
public class ObjectToolDemo {
public static void main(String[] args) {
// ObjectTool ot = new ObjectTool();
//
// ot.setObj(new String("风清扬"));
// String s = (String) ot.getObj();
// System.out.println("姓名是:" + s);
//
// ot.setObj(new Integer(30));
// Integer i = (Integer) ot.getObj();
// System.out.println("年龄是:" + i); // ot.setObj(new String("林青霞"));
// // ClassCastException
// Integer ii = (Integer) ot.getObj();
// System.out.println("姓名是:" + ii); System.out.println("-------------"); ObjectTool<String> ot = new ObjectTool<String>();
// ot.setObj(new Integer(27)); //这个时候编译期间就过不去
ot.setObj(new String("林青霞"));
String s = ot.getObj();
System.out.println("姓名是:" + s); ObjectTool<Integer> ot2 = new ObjectTool<Integer>();
// ot2.setObj(new String("风清扬"));//这个时候编译期间就过不去
ot2.setObj(new Integer(27));
Integer i = ot2.getObj();
System.out.println("年龄是:" + i);
}
}

泛型类用法二:泛型之方法

 package cn.itcast_05;

 //public class ObjectTool<T> {
// // public void show(String s) {
// // System.out.println(s);
// // }
// //
// // public void show(Integer i) {
// // System.out.println(i);
// // }
// //
// // public void show(Boolean b) {
// // System.out.println(b);
// // }
//
// public void show(T t) {
// System.out.println(t);
// }
// } /*
* 泛型方法:把泛型定义在方法上
*/
public class ObjectTool {
public <T> void show(T t) {
System.out.println(t);
}
}

然后编写泛型测试类:

 package cn.itcast_05;

 public class ObjectToolDemo {
public static void main(String[] args) {
// ObjectTool ot = new ObjectTool();
// ot.show("hello");
// ot.show(100);
// ot.show(true); // ObjectTool<String> ot = new ObjectTool<String>();
// ot.show("hello");
//
// ObjectTool<Integer> ot2 = new ObjectTool<Integer>();
// ot2.show(100);
//
// ObjectTool<Boolean> ot3 = new ObjectTool<Boolean>();
// ot3.show(true); // 如果还听得懂,那就说明泛型类是没有问题的
// 但是呢,谁说了我的方法一定要和类的类型的一致呢?
// 我要是类上没有泛型的话,方法还能不能接收任意类型的参数了呢? // 定义泛型方法后
ObjectTool ot = new ObjectTool();
ot.show("hello");
ot.show(100);
ot.show(true);
}
}

最新文章

  1. SQL Server 阻止了对组件 &#39;Ad Hoc Distributed Queries&#39; 的 STATEMENT&#39;OpenRowset/OpenDatasource&#39; 的访问
  2. nginx之location匹配优先级和安全问题
  3. B+Tree和MySQL索引分析
  4. CentOS7安装Ambari
  5. javascript中prototype、constructor以及__proto__之间的三角关系
  6. [CAMCOCO][C#]我的系统架构.服务器端.(四)----Model层 实体的自我验证
  7. spring多数据源配置
  8. 笔试面试题-小米Git
  9. WPF DataGrid 之数据绑定
  10. angular 指令梳理 —— 前端校验
  11. 按钮特效-Enter键自动提交表单
  12. 理解云计算的(IaaS PaaS SaaS)
  13. Node.js显示页面
  14. Mysql 上亿级数据导入Hive思路分享
  15. C# 操作Word目录——生成、删除目录
  16. HTTP协议7之Cookie--转
  17. 使用pgrouting进行最短路径搜索
  18. 转 JVM找出占用CPU最高的线程
  19. STL基础复习
  20. Android--Activity中使用Intent传值

热门文章

  1. centos7.1部署java环境服务器
  2. ASP.NET Core文件上传、下载与删除
  3. 日志收集之filebeat
  4. Java关键字final、static使用总结 (final static在容器中不可以改变容器但可以改变存放)
  5. ife task0003学习笔记(四):JavaScript构造函数
  6. java中HashMap的keySet()和values()
  7. 【转载】Web 研发模式演变
  8. opencv2.4.10+VS2012配置问题
  9. ThreadPoolExecutor(下篇)
  10. 理解JavaScript作用域