泛型JDK1.5以后的新特性,用于解决安全问题,是一个类型安全机制。
好处1
将运行时期的类型转换异常,转移到编译时期,方便程序员员解决问题。
让运行时问题减少,安全。
2,避免强制转换麻烦。
泛型格式:
通过<>来定义要操作的引用数据类型。
使用java提供的对象时,什么时候使用泛型?
通常在集合框架中,只要见到<>定义的就是泛型。
注意一点:HashSet中的equal没有泛型,必须强转。
自定义泛型。社么时候定义泛型类?当类中要操作的引用数据类型
不确定的时候定义泛型类。
泛型还可以定义在方法上。泛型类的局限性:创建对象时明确要操作的类型后,
所有要操作的类型就已经固定了。
为了让不同的方法可以操作不同的类型,而且类型好不确定。
那么可以将泛型定义在方法上。
特殊之处:
泛型类的静态方法不可以访问类上的定义的泛型。因为该泛型在创建对象时才确定。
如果静态方法要操作泛型,可以将泛型定义在方法上。泛型方法
的书写格式必须明确<>定义在修饰符后面,返回值类型前面。
----------------------------------------------------------
泛型定义到接口上可以在实现类上明确类型,也可以继续泛型在创建对象时明确类型
class FanXing
{
public static void main(String[] args)
{
new A().sop("asdasd");
new A().sop("44");
new B<String>().sop("asdad");
new B<Integer>().sop(1);
}
}
interface In<T>
{
void sop(T t);
}
class A implements In<String>
{
public void sop(String s)
{System.out.println(s);
}
}
class B <T>implements In<T>
{
public void sop(T s)
{
System.out.println(s);
}
}
泛型的高阶应用。
通配符<?>
泛型不明确类型<?>不能使用类型特有方法。
泛型限定有两个:
?extends E:k可以接受E类或者E的子类型。上限
?super E可以接收E类型或E的父类型。下限
|
|