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