黑马程序员---泛型
来源:互联网 发布:淘宝代销和分销的区别 编辑:程序博客网 时间:2024/06/18 15:12
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
泛型。
应用于编译时期,给编译器使用的技术,到了运行时期,泛型不存在。
好处:
1,将运行时期的问题ClassCastException问题转换成了编译失败,体现在了编译时期,让程序员就可以直接解决问题。
2,避免了强制转换的麻烦。
只要带有<>的类或者接口,都属于带有类型参数的类或者接口,在使用这些类或者接口时,必须给<>中传递一个具体的引用数据类型。
当类中的操作的引用数据类型不确定的时候,以前用的Object来进行扩展的,现在可以用泛型来表示。这样可以避免强转的麻烦,而且将运行时期遇到的问题转移到编译时期。
泛型的体现。
1,泛型类,将泛型定义在类上。
class Tool<Q>
{
private Q obj;
public void setObject(Q obj)
{
this.obj = obj;
}
public Q getObject()
{
return obj;
}
}
2,当方法操作的引用数据类型不确定的时候,可以将泛型定义在方法上。
public <W> void method(W w)
{
System.out.println(“method:”+w);
}
3,静态方法上的泛型:静态方法无法访问类上定义的方法。如果静态方法操作的引用数据类型不确定的时候,必须要将泛型定义在方法上。
public static <Q> void function(Q t)
{
System.out.println(“function:”+t);
}
4,泛型接口。
interface Inter<T>
{
void show(T t);
}
class InterImpi <R> implements Inter<R>
{
public void show(R r)
{
System.out.println(“show:”+r);
}
}
泛型通配符:?
可以解决当具体类型不确定的情况,当操作类型时,不需要使用类型的具体功能时,只使用Object类中的功能,可以用通配符?来表示未知类型。
泛型限定。
上限:? extends E可以接收E类型或者E的子类型对象。
向集合内添加元素时,既可以添加E类型对象,又可以添加E的子类型对象,因为在取元素的时候,E类型既可以接收E类对象,又可以接收E的子类对象。
下限:? super E可以接收E类型或者E的父类型对象。
当从集合中获取元素进行操作的时候,可以用当前元素的类型接收,也可以用当前元素的父类型接收。
注意:
1,泛型到底代表什么类型取决于调用者传入的类型,如果没传,默认是Object类型。
2,使用带泛型的类创建对象时,等式两边指定的泛型必须一致。
3,等式两边可以在任意一边使用泛型,在另一边不使用。
- 《黑马程序员》泛型
- 黑马程序员—泛型
- <黑马程序员>泛型
- 黑马程序员-Java泛型
- 黑马程序员_泛型
- 黑马程序员 泛型
- 黑马程序员--泛型
- 黑马程序员-java-泛型
- 黑马程序员_泛型
- 黑马程序员_Java泛型
- 黑马程序员_泛型
- 黑马程序员_泛型
- 黑马程序员-泛型Generic
- 黑马程序员:泛型
- 黑马程序员_泛型
- 黑马程序员--泛型
- 黑马程序员---高新技术 泛型
- 黑马程序员:泛型
- [移动] Android推送方案分析(MQTT/XMPP/GCM)
- 甄"嬛"被几亿人念错 没文化跟哀家斗?
- C# 导入EXCEL 报错外部表不是预期的格式错误
- (基于 TI8168) LINUX下QT环境配置,能用GDB+GDBSERVER进行调试
- XStream学习总结
- 黑马程序员---泛型
- eclipse常用配置
- 观察者模式
- 触摸屏网站开发系列(一)-ios web App应用程序(ios meta)
- UVA 167
- 注销、关闭和重启计算机
- Android多点触控技术
- ffmpeg音频编码
- 数据结构---->哈希表