欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java之路---Day16(泛型)

程序员文章站 2022-05-31 19:14:45
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 }