/*
class Demo<T>
{
public void show(T t)
{
System.out.println("show:"+t);
}
public void print(T t)
{
System.out.println("print:"+t);
}
}
/
/
泛型类定义的泛型,在整个类中有效,如果被方法使用,
那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了
为了让不同方法可以操作不同类型,而且类型还不确定,可以将类型定义在方法上
特殊之处:静态方法不可以访问类上定义的泛型。
如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上
*/
//把泛型定义在类上
class Demo<T>
{
public void show(T t)
{
System.out.println("show:"+t);
}
//把泛型定义在方法上
public <Q> void print(Q q)
{
System.out.println("show:"+q);
}
//泛型定义在返回值前面,否则格式书写错误
public static <W> void method(W w)
{
System.out.println("methd:"+w);
}
}
class GenericDemo4
{
public static void main(String[] args)
{
Demo<String> d = new Demo<String>();
d.show("haha");//ok
//d.show(4);/定义在类中的泛型,类型随着对象走,是String类型,编译失败
d.print(5);//定义在方法上的泛型,穿什么类型都可以,所以编译成功
d.print("haha");//定义在方法上的泛型,穿什么类型都可以,所以编译成功
Demo.method("hahahhaha");
/*
Demo d = new Demo();
d.show("haha");
d.print(new Integer(4));
*/
/*
Demo<Integer> d = new Demo<Integer>();//对象一建立操作类型也就定义了
d.show(new Integer(4));
d.print(9);//有自动装箱功能,打印4和9
*/
}
}
网友评论