Fork me on GitHub

认识泛型

-------------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+"\n");

 

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】

posted on 2017-03-18 21:59  siwuxie095  阅读(126)  评论(0编辑  收藏  举报

导航