栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java泛型小谈

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java泛型小谈

前言:

程序中,我们会经常使用变量,而使用变量时必须指明其类型,这样才能正常编译使用

假设一个情景:

表示一个地点的信息:

1.经度(字符串/小数) 2.纬度(字符串/小数) 3.地点名称(字符)

不同的数据类型,除了借助方法重载,也可以借助自动装箱(类型包装),转换为对应的包装类(Object类是所有类的父类)

eg: int-->Integer-->Object

char-->character-->Object

String-->Object

例:

public class Point {
    Object x=0;
    Object y=0;

    public Object getX(){
        return x;
    }

    public void setX(Object x){
        this.x=x;
    }

    public Object getY(){
        return y;
    }

    public void setY(Object y){
        this.y=y;
    }
}
 

在第13行报错,出现异常,即向下转时出错,所以应避免此类行为

正文:

以此来看是否可以既不重载,又可降低风险呢?,答案是肯定的(*^_^*)

泛型类  

泛型:即广泛的类型,任意的数据类型









  public class Point2 {    //定义泛型类
        T1 x;
        T2 y;

    public T1 getX(){
        return x;
    }

    public void setX(T1 x){
        this.x=x;
    }

    public T2 getY(){
        return y;
    }

    public void setY(T2 y){
        this.y=y;
    }
    }

  public class Demo02 {
    public static void main(String[] args) {
        //实例化泛型类
        Point2p1=new Point2();
        p1.setX(10);
        p1.setY(20);
        int x=p1.getX();
        int y=p1.getY();
        System.out.println("位置:"+x+","+y);

        Point2p2=new Point2();
        p2.setY("东经120°");
        p2.setX(26.3);
        Double m=p2.getX();
        String n=p2.getY();
        System.out.println("位置:"+m+","+n);
    }
}


这样就解决了问题,与普通类的定义相比,泛型类在类名后加入,T1,T2是自定义的参数类型,用来传递参数类型,非数据的值,在泛型中,不但数据的值可以通过参数传递,数据的类型也可以通过参数传递。T1, T2 只是数据类型的占位符,运行时会被替换为真正的数据类型。

小结:

传值参数(我们通常所说的参数)由小括号包围,如 (int x, double y),类型参数(泛型参数)由尖括号包围,多个参数由逗号分隔,如

类型参数需要在类名后面给出。一旦给出了类型参数,就可以在类中使用了。类型参数必须是一个合法的标识符,习惯上使用单个大写字母,通常情况下,K 表示键,V 表示值,E 表示异常或错误,T 表示一般意义上的数据类型。

泛型类在实例化时必须指出具体的类型,也就是向类型参数传值,格式为:
    className variable = new className();
也可以省略等号右边的数据类型,但是会产生警告,即:
    className variable = new className();

因为在使用泛型类时指明了数据类型,赋给其他类型的值会抛出异常,既不需要向下转型,也没有潜在的风险,比本文一开始介绍的自动装箱和向上转型要更加实用。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/754131.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号