进阶day02-泛型方法的使用
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package com.inmind.generic04;
|
package com.inmind.generic04;
|
||||||
/*
|
/*
|
||||||
|
泛型类:
|
||||||
能不能在一个类中定义一个未知类型,接收的具体的是什么类型,就返回什么类型,这个数据类型要动态,并省略掉强转操作,也避免类型转换异常???
|
能不能在一个类中定义一个未知类型,接收的具体的是什么类型,就返回什么类型,这个数据类型要动态,并省略掉强转操作,也避免类型转换异常???
|
||||||
可以,使用泛型类,在类名加上<任意大写字母>
|
可以,使用泛型类,在类名加上<任意大写字母>
|
||||||
泛型类的格式:
|
泛型类的格式:
|
||||||
@@ -11,14 +12,27 @@ package com.inmind.generic04;
|
|||||||
创建对象时才确定
|
创建对象时才确定
|
||||||
|
|
||||||
如果要定义多个未知类型,直接写在<A,B,C>即可
|
如果要定义多个未知类型,直接写在<A,B,C>即可
|
||||||
|
-------------------------------------------------------
|
||||||
|
泛型方法:
|
||||||
|
需求:我希望在一个工厂中接私活,定义出一个功能行为,接收任意类型的数据,动态返回该类型的数据,可以实现嘛??
|
||||||
|
可以,但是只能通过泛型方法实现
|
||||||
|
|
||||||
|
泛型方法格式:表示在一个方法中定义一个未知的类型
|
||||||
|
方法修饰符 <任意大写字母>返回值类型 方法名(参数列表){
|
||||||
|
方法体;
|
||||||
|
}
|
||||||
|
|
||||||
|
泛型方法的泛型类型何时确定???
|
||||||
|
当方法被调用时才确定,一般泛型方法中字母尽量不要与泛型类的字母一致
|
||||||
|
|
||||||
|
注意:泛型类和泛型方法是可以分开定义
|
||||||
*/
|
*/
|
||||||
//我现在定义了一个A类型的工厂
|
//我现在定义了一个A类型的工厂
|
||||||
//public class Factory<A,B,C> {
|
//public class Factory<A,B,C> {
|
||||||
public class Factory<A> {
|
public class Factory<A> {
|
||||||
|
|
||||||
//修理指定类型的产品,修理什么,就返回什么
|
//修理指定类型的产品,修理什么,就返回什么
|
||||||
public A fix(A a) {
|
public A fix(A a) {//使用了泛型类中的A类型的普通方法
|
||||||
System.out.println("东西修好了");
|
System.out.println("东西修好了");
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
@@ -29,4 +43,10 @@ public class Factory<A> {
|
|||||||
return o;
|
return o;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
//定义了一个未知类型B的泛型方法(接私活)
|
||||||
|
public <B> B fixAll(B b){
|
||||||
|
System.out.println("接了个私活了修理了东西");
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ public class GenericClassDemo05 {
|
|||||||
//买了一个平板
|
//买了一个平板
|
||||||
Pad pad = new Pad();
|
Pad pad = new Pad();
|
||||||
pad.play();
|
pad.play();
|
||||||
System.out.println("------------");
|
System.out.println("----泛型类的使用--------");
|
||||||
//手机和平板坏了,找专门的厂家去修理
|
//手机和平板坏了,找专门的厂家去修理
|
||||||
Factory<Phone> phoneFactory = new Factory<>();
|
Factory<Phone> phoneFactory = new Factory<>();
|
||||||
Phone fixedPhone = phoneFactory.fix(phone);
|
Phone fixedPhone = phoneFactory.fix(phone);
|
||||||
@@ -18,5 +18,15 @@ public class GenericClassDemo05 {
|
|||||||
Factory<Pad> padFactory = new Factory<>();
|
Factory<Pad> padFactory = new Factory<>();
|
||||||
Pad fixedPad = padFactory.fix(pad);
|
Pad fixedPad = padFactory.fix(pad);
|
||||||
fixedPad.play();
|
fixedPad.play();
|
||||||
|
System.out.println("--------泛型方法的使用---------------");
|
||||||
|
Factory<Phone> factory = new Factory<>();
|
||||||
|
Phone phone1 = factory.fix(phone);
|
||||||
|
phone1.call();
|
||||||
|
//我发现他修理得很好,顺嘴问了下平板会修吗???
|
||||||
|
Pad pad1 = factory.fixAll(pad);
|
||||||
|
pad1.play();
|
||||||
|
Phone phone2 = factory.fixAll(phone);
|
||||||
|
phone2.call();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user