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