zoukankan      html  css  js  c++  java
  • 认识泛型

    -------------siwuxie095

       

       

       

       

       

    泛型(Generic):

       

    1)泛型是在 JDK 1.5 之后增加的新功能。

       

    2)泛型可以解决数据类型的安全性问题,主要的原理:在类声明的时候通过

    一个标识表示类中某个属性的类型或某个方法的返回值及参数类型

       

    3)格式:「泛型一般用 T 表示」

       

       

       

    4)对象的创建:

       

       

       

       

    不使用泛型时:

       

    代码:

       

    package com.siwuxie095.generic;

       

    /**

    *不使用泛型时:

    * 需要在不同情况下显示三种数据类型的经纬度:

    * int (不精准的数据)

    * float (精准的数据)

    * String (给出提示的数据)

    * 其实可以用 Object 类型来接收所有的类型

    *最后需要进行类型转换

    * @author siwux

    *

    */

       

    class Point{

    private Object x;

    private Object y;

    //Alt+Shift+S( Source)->Generate Getters and Setters

    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;

    }

    }

       

    public class GenericDemo01 {

       

    public static void main(String[] args) {

    Point p=new Point();

    p.setX(10);

    p.setY(10);

    //自动拆箱装箱(JDK 1.5 之后才增加了拆箱、装箱)

    int px=(Integer) p.getX();

    int py=(Integer) p.getY();

    System.out.println("x="+px+",y="+py+" ");

    p.setX(10.1f);

    p.setY(10.1f);

    float px1=(Float) p.getX();

    float py1=(Float) p.getY();

    System.out.println("x="+px1+",y="+py1);

    // String类型同上

    }

       

    }

       

       

    运行一览:

       

       

       

       

       

    对比:使用泛型时

       

    代码:

       

    package com.siwuxie095.generic;

       

    /**

    *使用泛型时:

    * 需要在不同情况下显示三种数据类型的经纬度:

    * int (不精准的数据)

    * float (精准的数据)

    * String (给出提示的数据)

    *

    *最后不需要进行类型转换

    * @author siwux

    *

    */

       

    class Point<T>{

    private T x;

    private 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 GenericDemo01 {

       

    public static void main(String[] args) {

    //需要什么类型,就在 <> 尖括号中传入什么类型,如 IntegerString

    Point<String> p=new Point<String>();

    p.setX("110");

    p.setY("100");

    //泛型的好处:不会出现类型转换的问题

    System.out.println("x="+p.getX()+",y="+p.getY());

    }

       

    }

       

       

    运行一览:

       

       

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    懒人的gitlab安装
    SuperFish插件实现鼠标停留浮动的菜单栏.
    Bootstrap I
    京东首页样式分析.
    CentOs装VLC
    TI CC2541的通讯抓包.
    ffmpeg+ffserver实现摄像头直播
    arm linux上的第一个应用程序 BOA移植
    linux内核移植 I
    uboot启动参数
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/6576350.html
Copyright © 2011-2022 走看看