黑马程序员:Java基础总结
泛型
泛型:JDK1.5版本以后出现新特性。
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候,
早期定义Object来完成扩展。
现在定义泛型来完成扩展。
用于解决安全问题,是一个类型安全机制。
好处
1.将运行时期出现问题ClassCastException,转移到了编译时期。,
方便于程序员解决问题。让运行时问题减少,安全。,
2,避免了强制转换麻烦。
好处
1.将运行时期出现问题ClassCastException,转移到了编译时期。,
方便于程序员解决问题。让运行时问题减少,安全。,
2,避免了强制转换麻烦。
泛型定义在类上
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候,
早期定义Object来完成扩展。
现在定义泛型来完成扩展。
class
Utils<QQ> 让编译器不会报错QQ不存在 类似于QQ 全部替代啦Object
{
private
QQ
q
;
public
void
setObject(QQ q)
{
this
.
q
= q;
}
public
QQ getObject()
{
return
q
;
}
}
泛型定义在方法上
特殊之处:
静态方法不可以访问类上定义的泛型。
如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。
静态方法不可以访问类上定义的泛型。
如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。
class
Demo<T>
{
public
void
show(T t)
{
System.
out
.println(
"show:"
+t);
}
public
<Q>
void
print(Q q)
{
System.
out
.println(
"print:"
+q);
}
public
static
<W>
void
method(W t)
{
System.
out
.println(
"method:"
+t);
}
}
泛型定义在接口上
interface
Inter<T>
{
void
show(T t);
}
class
InterImpl <T>
implements
Inter<T>
//实现方法是也要<T>
{
public
void
show(T t)
{
System.
out
.println(
"show :"
+t);
}
}
? 通配符。
也可以理解为占位符。
泛型的限定;
? extends E: 可以接收E类型或者E的子类型。上限。
? super E: 可以接收E类型或者E的父类型。下限
泛型的限定;
? extends E: 可以接收E类型或者E的子类型。上限。
? super E: 可以接收E类型或者E的父类型。下限
public
static
void
printColl(Collection <?
extends
Person> al)