JAVA泛型学习
上一篇 /
下一篇 2013-05-13 22:03:51
/ 个人分类:JAVA学习
---泛型
在集合框架中,将集合中要存储的数据类型作为参数传递到<>中,如下
ArrayList<String> a1 = new ArrayList<String>();
好处:1、将错误在编译时抛出
2、避免强制转换
泛型类
当类中要操作的引用数据类型不确定时,定义泛型来完成扩展
泛型类定义的泛型,在整个类中有效,如果被方法使用,
那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经被固定了
class Demo<Q>
{
private Q q;
public void set(Q q)
{
this.q=q;
}
public Q get()
{
return q;
}
}
泛型方法定义,定义在修饰符后面,返回值前面
静态方法不可以访问定义的泛型类上的泛型
class Demo<T>
{
public <T>void show(T t)--类型随着对象走的
{
System.out.println("show"+t);
}
public <T>void print(Q q)---不受对象影响
{
System.out.println("show"+q);
}
public static <S>void met<S s>
{
System.out.println("met"+s);
}
}
泛型定义在接口上
interface Inter<T>
{
void show(T t);
}
class InterIm implements Inter<String>
{
public void show(String t)
{
System.out.println("s");
}
}
class Inter<T> implements Inter<T>
{
public void show(T t)
{
System.out.println("s");
}
}
泛型类型不确定时,使用?替代类型不明确
泛型限定 <? extends A>向上限定,接受A类型和其子类
<? super A>向下限定,可以接受A类型或者A的父类型
class Demo
{
public static void Print(ArrayList<?> A)
{
Iterator<?> it=al.iterator();
while (it.hasNext())
{
Systme.out.println(it.next());
}
}
public static <T> void Print(ArrayList<T> A)
{
Iterator<T> it=al.iterator();
while (it.hasNext())
{
Systme.out.println(it.next());
}
}
}
收藏
举报
TAG: