黑马程序员—15—java基础:有关泛型的学习笔记和学习心得体会
来源:互联网 发布:人工智能的未来趋势 编辑:程序博客网 时间:2024/06/04 01:18
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
1. jak1.5版本以后出现新特性,用于解决安全问题,是一个类型安全机制。
2. 泛型的好处:
1.将运行时期出现问题ClassCastException,转移到编译时期,方便程序员解决为题,让运行事情问题减少,安全。
2.避免了强制转换麻烦。
3. 泛型的格式:通过<>来定义要操作的引用数据类型。
在使用java提供的对象时,什么时候写泛型呢?
通常在集合框架中很常见,只要见到<>就要定义泛型,其实<>就是用来接收类型的,当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。
例子:
class TreeSetDemo
{
public static void main(String[] args)
{
ArrayList<String> a1 = new ArrayList<String>();
a1.add("abc01");
a1.add("abc0991");
a1.add("abc014");
Iterator<String> it = a1.iterator();
while(it.hasNext())
{
String s = it.next();
System.out.println(s+":"+s.length());
}
}
}
4. 什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候,早期定义Object来完成扩展,现在定义泛型来完成扩展。
例子:
class Utils<QQ>
{
private QQ q;
public void setObject(QQ q)
{
this.q = q;
}
public QQ getObject()
{
return q;
}
}
class GenericDemo
{
public static void main(String [] args)
{
Utils<Worker> u = new Utils<Worker>();
u.setObject(new Worker());
Worker w = u.getObject();
}
}
5. 泛型类定义的泛型,在整个类中有效,如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。
为了让不同的方法可以操作不同类型,而且类型还不确定,那么可以将泛型定义在方法上。
例子:泛型方法
class Demo
{
public <t> void show(T t)
{
System.out.println("show"+t);
}
public <Q> void print(Q q)
{
System.out.println("print"+q);
}
}
class Gener
{
public static void main(String [] args)
{
Demo d = new Demo();
d.show("haha");
d.show(new Integer(4));
d.print("heihei");
}
}
6. 特殊之处:
静态方法不可以访问类上定义的泛型,如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。静态方法本身可以定义泛型。
7. 例子:
class A
{
public static void print(ArrayList<?> a1)//因为不知道打印什么,即用<?>统配符
Iterator <?> it = a1.iterator();
}
8. 泛型限定;
class A
{
public static void print(ArrayList<? extends Person> a1)//因为不知道打印什么,即用<?>统配符
Iterator <? extends Person> it = a1.iterator();
}
?通配符,也可以理解为占位符
泛型的限定:
?extends E:可以接收E类型或者E的子类型,上限,
?super E:可以接收E类型或E的父类型,下限。
}
9. 学习心得和体会
掌握泛型的用法,了解泛型都有哪些功能,
泛型类定义的泛型,在整个类中有效,如果被方法使用,那么泛型类的对象明确要 操作的具体类型后,所有要操作的类型就已经固定了。
为了让不同的方法可以操作不同类型,而且类型还不确定,那么可以将泛型定义在 方法上。
特殊之处:
静态方法不可以访问类上定义的泛型,如果静态方法操作的应用数据类型不确定, 可以将泛型定义在方法上。静态方法本身可以定义泛型。
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
- 黑马程序员—15—java基础:有关泛型的学习笔记和学习心得体会
- 黑马程序员—8—Java基础:有关包的学习笔记和学习心得和体会
- 黑马程序员—9—Java基础:有关多线程的学习笔记和学习心得体会
- 黑马程序员—10—java基础:有关多线程安全的学习笔记和学习心得体会
- 黑马程序员—11—java基础:有关线程通信的学习笔记和学习心得体会
- 黑马程序员—12—java基础:有关字符串的学习笔记和学习心得体会
- 黑马程序员—14—java基础:有关集合框架的学习笔记和学习心得体会
- 黑马程序员—18—java基础:有关IO流的学习笔记和学习心得体会
- 黑马程序员—19—java基础:有关File类的学习笔记和学习心得体会
- 黑马程序员—21—java基础:有关网络编程的学习笔记和学习心得体会
- 黑马程序员—7—Java基础:有关异常学习笔记和学习心得体会
- 黑马程序员—20—java基础:有关GUI图形用户界面学习笔记和学习心得体会
- 黑马程序员—24—java面试:有关银行调度学习笔记和学习心得体会
- 黑马程序员—22—高新技术:有关高新技术的学习笔记和学习心得体会
- 黑马程序员—4—Java基础: 面向对象继承学习笔记和学习心得体会
- 黑马程序员—5—Java基础:多态学习笔记和学习心得体会
- 黑马程序员—2—Java基础:循环体的区别于联系和学习心得体会
- 黑马程序员—23—java面试:有关交通灯学习笔记和学习心得
- HDFS采用主从(Master/Slave)结构模型
- Android菜鸟的成长笔记(10)——使用Bundle在Activity之间传值
- C#实现黑客帝国字幕特效
- stl排序之sort函数
- 远程桌面按键失效变成快捷键
- 黑马程序员—15—java基础:有关泛型的学习笔记和学习心得体会
- 通过栈浅析递归调用
- 黑客利用微软公司IE10浏览器的一个未知漏洞发起了新的攻击
- Java学习之提高!初步接触eclipse和知识复苏(因为有不少是前面提到的)
- Week3 Assignment - Princeton-Algorithms-PartI
- 九度OJ 1513 二进制中1的个数
- Jrtplib3.9.1交叉编译
- topcoder srm609 div1
- 一口一个设计模式--职责链模式