Java基础知识强化之集合框架笔记31:集合之泛型类的概述和基本使用

1. 为什么会有泛型呢?

(1)早期的Object类型可以接收任意的对象类型,但是在实际使用中,会有类型转换的问题,也存在这隐患,所以Java提供了泛型来解决这个安全问题。

2. 泛型类的使用:

(1)首先定义一个泛型类ObjectTool,如下:

 1 package cn.itcast_04;
 2
 3 /*
 4  * 泛型类:把泛型定义在类上
 5  */
 6 public class ObjectTool<T> {
 7     private T obj;
 8
 9     public T getObj() {
10         return obj;
11     }
12
13     public void setObj(T obj) {
14         this.obj = obj;
15     }
16 }

(2)编写一个泛型类的测试:

 1 package cn.itcast_04;
 2
 3 /*
 4  * 泛型类的测试
 5  */
 6 public class ObjectToolDemo {
 7     public static void main(String[] args) {
 8         // ObjectTool ot = new ObjectTool();
 9         //
10         // ot.setObj(new String("风清扬"));
11         // String s = (String) ot.getObj();
12         // System.out.println("姓名是:" + s);
13         //
14         // ot.setObj(new Integer(30));
15         // Integer i = (Integer) ot.getObj();
16         // System.out.println("年龄是:" + i);
17
18         // ot.setObj(new String("林青霞"));
19         // // ClassCastException
20         // Integer ii = (Integer) ot.getObj();
21         // System.out.println("姓名是:" + ii);
22
23         System.out.println("-------------");
24
25         ObjectTool<String> ot = new ObjectTool<String>();
26         // ot.setObj(new Integer(27)); //这个时候编译期间就过不去
27         ot.setObj(new String("林青霞"));
28         String s = ot.getObj();
29         System.out.println("姓名是:" + s);
30
31         ObjectTool<Integer> ot2 = new ObjectTool<Integer>();
32         // ot2.setObj(new String("风清扬"));//这个时候编译期间就过不去
33         ot2.setObj(new Integer(27));
34         Integer i = ot2.getObj();
35         System.out.println("年龄是:" + i);
36     }
37 }

运行结果如下:

时间: 2024-10-23 09:55:04

Java基础知识强化之集合框架笔记31:集合之泛型类的概述和基本使用的相关文章

Java基础知识强化之IO流笔记07:自定义的异常概述和自定义异常实现

1. 开发的时候往往会出现很多问题(java内部系统框架中没有提供这些异常) 比如说:考试成绩必须在0~100之间. 很明显java没有对应的异常,需要我们自己来做一个异常. (1)继承自Exception(编译期) (2)继承自RuntimeException(运行期) 2. 自定义异常的案例: (1)自定义异常MyException继承自Exception,那么MyException属于编译期异常,如下: 1 package com.himi.myexception; 2 3 /** 4 *

Java基础知识强化之IO流笔记16:IO流的概述和分类

1. IO流的分类   流向:     (1)输入流:读取数据到内存     (2)输出流:写入数据到硬盘(磁盘)   操作的数据类型:    (1)字节流:操作的数据是字节                            输入流                            输出流        (2)字符流:操作的数据是字符,为了方便操作文本数据,Java就提供了字符流.                            输入流                      

Java基础知识强化之IO流笔记31:转换流出现的原因和格式

1. 由于字节流操作中文不是特别方便,所以Java就提供了转换流.  字符流 = 字节流 + 编码表 2. 编码表 由字符及其对应数值组成的一张表 常见的编码表: • ASCII/Unicode字符集 • ISO-8859-1 • GB2312/GBK/GB18030 • BIG5 • UTF-8 3. String类中编码和解码问题: (1)String中使用构造方法:(解码) String(byte[] bytes, String charsetName)           通过使用指定的

Java基础知识强化之IO流笔记11:递归之递归概述和注意事项

1. 递归: 方法定义中调用方法本身的现象. e.g: 1 public void show(int n ) { 2 if(n <= 0) { 3 System.exit(0); 4 } 5 System.out.println(n); 6 show(--n); 7 } 注意事项:     (1)递归一定要有出口,否则就是死循环     (2)递归的次数不能太多,否则就内存溢出 (3)构造方法不能递归使用

Java基础知识强化之IO流笔记68:Properties和IO流集合使用

1. Properties和IO流集合使用 这里的集合必须是Properties集合:  public void load(Reader reader):把文件中的数据读取到集合中  public void store(Writer writer,String comments):把集合中的数据存储到文件 2. 代码实现: 1 package cn.itcast_08; 2 3 import java.io.FileReader; 4 import java.io.FileWriter; 5 i

Java基础知识强化之IO流笔记45:IO流练习之 把文本文件中数据存储到集合中的案例

1.  把文本文件中数据存储到集合中      需求:从文本文件中读取数据(每一行为一个字符串数据)到集合中,并遍历集合. 分析:      通过题目的意思我们可以知道如下的一些内容,      数据源是一个文本文件.      目的地是一个集合.      而且元素是字符串.      数据源:   b.txt -- FileReader -- BufferedReader  目的地:  ArrayList<String> 2. 代码示例: 1 package cn.itcast_02; 2

Java基础知识强化之IO流笔记66:Properties的概述 和 使用(作为Map集合使用)

1. Properties的概述  Properties:属性集合类.是一个可以和IO流相结合使用的集合类.Properties 可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串. Properties是Hashtable的子类,说明是一个Map集合. 2. Properties作为Map集合使用 1 package cn.itcast_08; 2 3 import java.util.Properties; 4 import java.util.Set; 5 6 /* 7 *

Java基础知识强化之IO流笔记45:IO流练习之 把集合中的数据存储到文本文件案例

1. 把集合中的数据存储到文本文件案例:    需求:把ArrayList集合中的字符串数据存储到文本文件 ? (1)分析:通过题目的意思我们可以知道如下的一些内容,ArrayList集合里存储的是字符串.遍历ArrayList集合,把数据获取到.然后存储到文本文件中.文本文件说明使用字符流. (2) 数据源: ArrayList<String> -- 遍历得到每一个字符串数据 目的地: a.txt -- FileWriter -- BufferedWriter 2. 代码示例: 1 pack

Java基础知识强化之IO流笔记47:IO流练习之 随机获取文本文件中的姓名案例

1.  随机获取文本文件中的姓名案例     需求:我有一个文本文件中存储了几个名称,请大家写一个程序实现随机获取一个人的名字.     分析:           A:  把文本文件中的数据存储到集合中           B:  随机产生一个索引           C:  根据该索引获取一个值 2. 代码实现: 1 package cn.itcast_02; 2 3 import java.io.BufferedReader; 4 import java.io.FileReader; 5

Java基础知识强化之IO流笔记17:FileOutputStream构造方法使用

1. 可以参照之前写的笔记:   Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流) 2. FileOutputStream(常用的)构造方法: FileOutputStream(File file)           Constructs a new FileOutputStream on the File file. FileOutputStream(String filename)           Constructs a new FileO