进阶day02-泛型类的使用
This commit is contained in:
32
javaSE-day02/src/com/inmind/generic04/Factory.java
Normal file
32
javaSE-day02/src/com/inmind/generic04/Factory.java
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
package com.inmind.generic04;
|
||||||
|
/*
|
||||||
|
能不能在一个类中定义一个未知类型,接收的具体的是什么类型,就返回什么类型,这个数据类型要动态,并省略掉强转操作,也避免类型转换异常???
|
||||||
|
可以,使用泛型类,在类名加上<任意大写字母>
|
||||||
|
泛型类的格式:
|
||||||
|
public class 类名<大写字母>
|
||||||
|
|
||||||
|
泛型类:就是在类中定义了一个未知的类型.
|
||||||
|
|
||||||
|
泛型类的A类型何时确定?
|
||||||
|
创建对象时才确定
|
||||||
|
|
||||||
|
如果要定义多个未知类型,直接写在<A,B,C>即可
|
||||||
|
|
||||||
|
*/
|
||||||
|
//我现在定义了一个A类型的工厂
|
||||||
|
//public class Factory<A,B,C> {
|
||||||
|
public class Factory<A> {
|
||||||
|
|
||||||
|
//修理指定类型的产品,修理什么,就返回什么
|
||||||
|
public A fix(A a) {
|
||||||
|
System.out.println("东西修好了");
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
//已经学习过多态,如果没有泛型,可以使用多态来动态接收不同的类型
|
||||||
|
/*public Object fixO(Object o) {
|
||||||
|
System.out.println("o-东西修好了");
|
||||||
|
return o;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.inmind.generic04;
|
||||||
|
|
||||||
|
public class GenericClassDemo05 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
//买了一个手机
|
||||||
|
Phone phone = new Phone();
|
||||||
|
phone.call();
|
||||||
|
|
||||||
|
//买了一个平板
|
||||||
|
Pad pad = new Pad();
|
||||||
|
pad.play();
|
||||||
|
System.out.println("------------");
|
||||||
|
//手机和平板坏了,找专门的厂家去修理
|
||||||
|
Factory<Phone> phoneFactory = new Factory<>();
|
||||||
|
Phone fixedPhone = phoneFactory.fix(phone);
|
||||||
|
fixedPhone.call();
|
||||||
|
|
||||||
|
Factory<Pad> padFactory = new Factory<>();
|
||||||
|
Pad fixedPad = padFactory.fix(pad);
|
||||||
|
fixedPad.play();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -18,6 +18,8 @@ import java.util.ArrayList;
|
|||||||
泛型的好处:
|
泛型的好处:
|
||||||
1.使用泛型,可以省略强转操作
|
1.使用泛型,可以省略强转操作
|
||||||
2.将运行时期的异常提前到了编译时期,为了确保数据操作的安全性
|
2.将运行时期的异常提前到了编译时期,为了确保数据操作的安全性
|
||||||
|
|
||||||
|
注意:java中的泛型是伪泛型,它只有在编译时期有效,运行时期就没有泛型了!!!
|
||||||
*/
|
*/
|
||||||
public class GenericDemo04 {
|
public class GenericDemo04 {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|||||||
7
javaSE-day02/src/com/inmind/generic04/Pad.java
Normal file
7
javaSE-day02/src/com/inmind/generic04/Pad.java
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
package com.inmind.generic04;
|
||||||
|
|
||||||
|
public class Pad {
|
||||||
|
public void play() {
|
||||||
|
System.out.println("在平板上玩游戏");
|
||||||
|
}
|
||||||
|
}
|
||||||
8
javaSE-day02/src/com/inmind/generic04/Phone.java
Normal file
8
javaSE-day02/src/com/inmind/generic04/Phone.java
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
package com.inmind.generic04;
|
||||||
|
|
||||||
|
public class Phone {
|
||||||
|
|
||||||
|
public void call(){
|
||||||
|
System.out.println("手机在打电话");
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user