Java之路---Day16(泛型)
程序员文章站
2024-01-29 13:32:16
2019-11-02-23:25:26 目录 1.泛型的概念: 2.泛型的定义和使用: 2.1定义和使用含有泛型的类: 2.2定义和使用含有泛型的方法: 2.3定义和使用含有泛型的接口: 泛型的概念: 泛型是一种未知的数据类型,当我门不知道使用什么数据类型的时候,可以使用泛型,泛型也可以看成是一个变 ......
2019-11-02-23:25:26
目录
1.泛型的概念:
2.泛型的定义和使用:
2.1定义和使用含有泛型的类:
2.2定义和使用含有泛型的方法:
2.3定义和使用含有泛型的接口:
泛型的概念:
泛型是一种未知的数据类型,当我门不知道使用什么数据类型的时候,可以使用泛型,泛型也可以看成是一个变量,用来接受数据类型
e e:element 元素
t t:type 类型
泛型的定义和使用:
我们在集合中会大量使用到泛型,用来灵活地将数据类型应用到不同的类、方法、接口当中,将数据类型作为参数进行传递
定义和使用含有泛型的类:
修饰符 class 类名<代表泛型的变量>{ }
1 package demosummary.generic; 2 3 public class genericclass<e> { 4 private e name; 5 6 public genericclass() { 7 } 8 9 public genericclass(e name) { 10 this.name = name; 11 } 12 13 public e getname() { 14 return name; 15 } 16 17 public void setname(e name) { 18 this.name = name; 19 } 20 21 @override 22 public string tostring() { 23 return "genericclass{" + 24 "name=" + name + 25 '}'; 26 } 27 }
1 package demosummary.generic; 2 3 public class genericclasstest { 4 public static void main(string[] args) { 5 //不写泛型则默认为object类 6 genericclass gc = new genericclass(); 7 gc.setname("默认为object类"); 8 object obj = gc.getname(); 9 system.out.println(obj); 10 11 //使用泛型为integer类 12 genericclass<integer> gci = new genericclass<>(); 13 gci.setname(1); 14 integer integer = gci.getname(); 15 system.out.println(integer); 16 } 17 }
定义和使用含有泛型的方法:
格式:修饰符<泛型> 返回值类型 方法名(参数列表(使用泛型)){
语句体;
}
注意:含有泛型的方法,在调用方法的时候确定泛型的数据类型,传递什么类型的参数,泛型就是什么类型
1 package demosummary.generic; 2 3 public class genericmethod { 4 //定义一个含有泛型的方法 5 public <e> void method(e e){ 6 system.out.println(e); 7 } 8 9 //定义一个含有泛型的静态方法 10 public static <m> void method01(m m){ 11 system.out.println(m); 12 } 13 }
1 package demosummary.generic; 2 3 public class genericmethodtest { 4 public static void main(string[] args) { 5 //创建一个genericmethod对象 6 genericmethod gm = new genericmethod(); 7 gm.method(1);//传入integer类型 8 gm.method("字符串");//传入string类型 9 gm.method(1.1);//传入float类型 10 gm.method(true);//传入boolean类型 11 12 //静态方法建议通过类名调用 13 genericmethod.method01(2);//传入integer类型 14 genericmethod.method01("静态方法");//传入string类型 15 } 16 }
定义和使用含有泛型的接口:
格式:
修饰符 interface接口名<代表泛型的变量>{ }
第一种使用方式:
定义接口的实现类,实现接口,指定接口的泛型
第二种使用方式:
接口使用什么泛型,实现类就使用什么泛型,类跟着接口走
1 package demosummary.generic; 2 //定义一个抽象类 3 public interface genericinterface<e> { 4 //创建一个抽象方法 5 public void method(e e); 6 }
1 package demosummary.generic; 2 3 public class genericinterface01 implements genericinterface<string>{ 4 //重写抽象方法 5 @override 6 public void method(string s) { 7 system.out.println(s); 8 } 9 }
1 package demosummary.generic; 2 3 public class genericinterface02<e> implements genericinterface<e>{ 4 //重写抽象类中的抽象方法 5 @override 6 public void method(e e) { 7 system.out.println(e); 8 } 9 }
1 package demosummary.generic; 2 3 public class genericinterfacetest { 4 public static void main(string[] args) { 5 //创建一个genericinterface01对象,指定实现类泛型为string类型 6 genericinterface01 gi01 = new genericinterface01(); 7 gi01.method("泛型指定为字符串"); 8 9 //创建一个genericinterface02对象,接口泛型为integer类型,实现类也为integer类型 10 genericinterface02<integer> gi02 = new genericinterface02<>(); 11 gi02.method(2); 12 13 //创建一个genericinterface02对象,接口泛型为string类型,实现类也为string类型 14 genericinterface02<string> gi021 = new genericinterface02<>(); 15 gi021.method("接口为什么泛型,实现类就是什么泛型"); 16 } 17 }