JAVA泛型

Posted 白客C

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA泛型相关的知识,希望对你有一定的参考价值。

泛型的本质是参数化类型,也就是说所操的数据类型被指定为一个参数,这种参数类型可以在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。引入泛型的好处是在编译的时候检查类型安全,并且所有强制转换都是自动和隐式的,提高代码的重用效率。简单来说就是安全简单。

 

实例一

强制转换问题

 1 /*
 2  * 作者:白客C
 3  * 时间:2020年03月05日
 4  * 内容:泛型解决强制转换
 5  */
 6 
 7 package com.beekc.www;
 8 import java.util.*;
 9 
10 public class Beekc {
11     public static void main(String[] args) {
12 
13         //实例化一个属于泛型的集合类
14         ArrayList<Dog> arr = new ArrayList<Dog>();
15         //实例化狗类
16         Dog dog = new Dog("白客",18);
17         //添加到集合
18         arr.add(dog);
19 
20         //这里不用强制转换,对于强制类型转换错误的情况,编译器可能不提示错误
21         Dog temp = arr.get(0);
22 
23         System.out.println("姓名:"+ temp.getName() + "
年龄:" + temp.getAge());
24 
25     }
26 }
27 
28 
29 //狗类
30 class Dog{
31     private String name;
32     private int age;
33 
34     public Dog(String name,int age)
35     {
36         this.name = name;
37         this.age = age;
38     }
39 
40     public String getName() {
41         return name;
42     }
43 
44     public void setName(String name) {
45         this.name = name;
46     }
47 
48     public int getAge() {
49         return age;
50     }
51 
52     public void setAge(int age) {
53         this.age = age;
54     }
55 }

 

实例二

可定义一个泛型类,想实例化什么样的类型就传过去什么类型,我下面实例是传一个String类型。这样可以提高代码的重用效率。也可以通过反射机制去获取其他类的方法、字段、构造函数、类型等。

 1 /*
 2  * 作者:白客C
 3  * 时间:2020年03月05日
 4  * 内容:反射机制
 5  */
 6 
 7 package com.beekc.www;
 8 
 9 public class Beekc {
10     public static void main(String[] args) {
11 
12         //实例化一个泛型对象并给它为String类型
13         Gen<String> gen = new Gen<String>("白客C");
14         gen.showTypeName();
15 
16         Gen<Bird> Bgen = new Gen<Bird>(new Bird());
17         Bgen.showTypeName();
18 
19 
20     }
21 }
22 
23 class Bird
24 {
25     public void input()
26     {
27         System.out.println("白客C");
28     }
29 }
30 
31 //定义一个泛型类
32 class Gen<T>
33 {
34     private T o;
35 
36     //构造函数
37     public Gen(T o)
38     {
39         this.o = o;
40     }
41 
42     public void showTypeName()
43     {
44         System.out.println("类型是:" + o.getClass().getName());
45     }
46 }

 

以上是关于JAVA泛型的主要内容,如果未能解决你的问题,请参考以下文章

201621123062《java程序设计》第九周作业总结

什么意思 在HashMap之前 ? Java中的泛型[重复]

这个嵌套类构造函数片段可以应用于泛型类吗?

201621123037 《Java程序设计》第9周学习总结

Java——泛型

作业09-集合与泛型