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泛型的主要内容,如果未能解决你的问题,请参考以下文章
什么意思 在HashMap之前 ? Java中的泛型[重复]