zoukankan      html  css  js  c++  java
  • 泛型

    一,Demo1:

    public class Point<T> {
        public T x;
        public T y;
        public T getX() {
            return x;
        }
        public void setX(T x) {
            this.x = x;
        }
        public T getY() {
            return y;
        }
        public void setY(T y) {
            this.y = y;
        }
    }

    public class GenDemo {
        public static void main(String args[])
        {
            Point<Float> p=new Point<Float>();
            p.setX(11.9f);
            p.setY(20.8f);
            System.out.println(p.getX());
            System.out.println(p.getY());
        }
    }

    二,Demo2泛型擦除

    public class Point<T> {
        public T x;
        public T y;
        public T getX() {
            return x;
        }
        public void setX(T x) {
            this.x = x;
        }
        public T getY() {
            return y;
        }
        public void setY(T y) {
            this.y = y;
        }
        //构造方法使用泛型
        Point(T x,T y)
        {
            this.setX(x);
            this.setY(y);
        }
    }
    public class GenDemo {
        public static void main(String args[])
        {
            Point<Float> p=new Point<Float>(11.9f,20.8f);
            System.out.println(p.getX());
            System.out.println(p.getY());
       
            //泛型擦除后按照object类型操作
            Point p1=new Point(11.2f,11.3f);
            System.out.println(p1.getX());
            System.out.println(p1.getY());
        }
    }

    三,泛型通配符

    泛型里面不能够自动转型

    public class GenDemo {
        public static void main(String args[])
        {
            Point<Float> p=new Point<Float>(11.9f,20.8f);
            System.out.println(p.getX());
            System.out.println(p.getY());
       
            //泛型擦除后按照object类型操作
            Point p1=new Point(11.2f,11.3f);
            System.out.println(p1.getX());
            System.out.println(p1.getY());
           
            //泛型通配符接收
            Point<Object> p3=new Point<Object>();
            Point<Integer> p4=new Point<Integer>();
            fun(p3);
            fun(p4);       
        }
        //泛型通配符接收不同的限定类型
        public static void  fun(Point<?> po)
        {
            System.out.println(po.getX());
            System.out.println(po.getY());
        }
    }

    四,泛型上限

    //设置泛型上限,那么T的数据类型不能超过Number
    public class Point<T extends Number> {
        public T x;
        public T y;
        public T getX() {
            return x;
        }
        public void setX(T x) {
            this.x = x;
        }
        public T getY() {
            return y;
        }
        public void setY(T y) {
            this.y = y;
        }
        Point(){}
        //构造方法使用泛型
        Point(T x,T y)
        {
            this.setX(x);
            this.setY(y);
        }
    }

    public class GenDemo {
        public static void main(String args[])
        {
            Point<Float> p=new Point<Float>(11.9f,20.8f);
            System.out.println(p.getX());
            System.out.println(p.getY());
       
            //泛型擦除后按照object类型操作
            Point p1=new Point(11.2f,11.3f);
            System.out.println(p1.getX());
            System.out.println(p1.getY());
           
            //泛型通配符接收
            Point<Object> p3=new Point<Object>(1,2);
            Point<Integer> p4=new Point<Integer>(6,9);
            fun(p3);
            fun(p4);   
           
            //最大操作父类为Number
            Point<Integer> p6=new Point<Integer>();
        }
        //泛型通配符接收不同的限定类型
        public static void  fun(Point<? extends Number> po)
        {
            System.out.println(po.getX());
            System.out.println(po.getY());
        }
    }

    五,泛型下限

    //设置泛型上限,那么T的数据类型不能超过Number
    public class Point<T> {
        public T x;
        public T y;
        public T getX() {
            return x;
        }
        public void setX(T x) {
            this.x = x;
        }
        public T getY() {
            return y;
        }
        public void setY(T y) {
            this.y = y;
        }
        Point(){}
        //构造方法使用泛型
        Point(T x,T y)
        {
            this.setX(x);
            this.setY(y);
        }
    }

    public class GenDemo {
        public static void main(String args[])
        {
            Point<Float> p=new Point<Float>(11.9f,20.8f);
            System.out.println(p.getX());
            System.out.println(p.getY());
       
            //泛型擦除后按照object类型操作
            Point p1=new Point(11.2f,11.3f);
            System.out.println(p1.getX());
            System.out.println(p1.getY());
           
            //泛型通配符接收
            Point<Object> p3=new Point<Object>(1,2);
            Point<Integer> p4=new Point<Integer>(6,9);
            fun(p3);   
           
            //最大操作父类为Number
            Point<Integer> p6=new Point<Integer>();
        }
        //泛型通配符接收不同的限定类型
        //在泛型方法中设定泛型的下限
        public static void  fun(Point<? super String> po)
        {
            System.out.println(po.getX());
            System.out.println(po.getY());
        }
    }

  • 相关阅读:
    事务(进程 ID 133)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品的解决方案
    Waiting for cache lock
    Win11系统将软件安装在C盘后,打开软件会有无法正常读写C盘下文件的问题
    SharePoint 2010 微软学习教程
    Oracle 远程连接配置文件
    如何优化操作大数据量数据库(几十万以上数据)(二。改善SQL语句)
    SQL BI Microsoft MSDN
    Oracle 错误:ORA06413: Connection not open 解决办法
    2008R2Win7管理一创建域和加入域
    学生表 课程表 成绩表 教师表 50个常用sql语句
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1941939.html
Copyright © 2011-2022 走看看