Java 泛型

  • 时间:2018-12-26 23:24 作者:海若Hero 来源:海若Hero 阅读:402
  • 扫一扫,手机访问
摘要:1.1.1 泛型的基本概念泛型是java se1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创立中,分别称为泛型类、泛型接口、泛型方法。java语言引入泛型的好处是安全简单。在java se1.5之前,没有泛型的情况下,通过对类

1.1.1 泛型的基本概念

泛型是java se1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创立中,分别称为泛型类、泛型接口、泛型方法。

java语言引入泛型的好处是安全简单。

在java se1.5之前,没有泛型的情况下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的,对于强制类型转换错误的情况,编译器可能不提醒错误,在运行的时候才出现异常,这是一个安全隐患。

泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率

//泛型的必要性:示例:import java.util.*;public class Generics {    public static void main(String[] args) {        ArrayList<Dog> al=new ArrayList<Dog>();//<Dog>即泛型的指定参数,提高安全性        ArrayList bl=new ArrayList();        //创立一只狗        Dog dog1=new Dog();        //放入到集合中        al.add(dog1);        //取出        Dog temp=al.get(0);//引用泛型后就可不用强转,Dog temp=(Dog)al.get(0);        Cat temp1=(Cat)bl.get(0);    }}class Cat{    private String color;    private int age;    public String getColor() {        return color;    }    public void setColor(String color) {        this.color = color;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }}class Dog{    private String name;    private int age;        public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }}

1.1.2 Java-->反射机制

[Demo147.java]

//泛型的必要性import java.util.*;import java.lang.reflect.Method;//引入Java反射方法类public class Demo147 {    public static void main(String[] args) {        Gen<String> gen1=new Gen<String>("aa");//<>可以放任意类型        Gen<Bird> gen2=new Gen<Bird>(new Bird());//<>也可以放入定义好的类        gen1.showTypeName();        gen2.showTypeName();    }}//定义一个Birdclass Bird{    public void test1(){        System.out.println("aa");    }    public void count(int a,int b){        System.out.println(a+b);    }}//定义一个类class Gen<T>{//T传入什么类型,Gen类就是什么什么类型    private T o;    //构造函数    public Gen(T a){        o=a;    }    //得到T的类型名称    public void showTypeName(){        System.out.println("类型是:"+o.getClass().getName());        //通过反射机制,我们可以得到T这个类型的很多信息        //得到成员函数名        Method [] m=o.getClass().getDeclaredMethods();        //打印        for(int i=0;i<m.length;i++){            System.out.println(m[i].getName());//打印函数名列表        }    }}

1.1.3 泛型的优点

使用泛型有下面几个优点:

1、类型安全

2、向后兼容

3、层次清晰

4、性能较高,用GJ(泛型JAVA)编写的代码可以为java编译器和虚拟机带来更多的类型信息,这些信息对java程序做进一步优化提供条件。

===============================================================================


tobehero666.png
  • 全部评论(0)
最新发布的资讯信息
【系统环境|】2FA验证器 验证码如何登录(2024-04-01 20:18)
【系统环境|】怎么做才能建设好外贸网站?(2023-12-20 10:05)
【系统环境|软件环境】梦幻仙域游戏攻略(2023-12-19 10:02)
【系统环境|软件环境】梦幻仙域游戏攻略(2023-12-19 10:02)
【系统环境|】卡帕部落揭秘潮玩新宠,探究玩法(2023-12-14 09:45)
【系统环境|数据库】 潮玩宇宙游戏道具收集方法(2023-12-12 16:13)
【系统环境|】如何开发搭建卡帕部落模式源码(2023-12-12 10:44)
【系统环境|】遥遥领先!青否数字人直播系统5.0发布,支持真人接管实时驱动!(2023-10-12 17:31)
【系统环境|服务器应用】克隆自己的数字人形象需要几步?(2023-09-20 17:13)
【系统环境|】Tiktok登录教程(2023-02-13 14:17)
手机二维码手机访问领取大礼包
返回顶部