认识泛型

-------------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;

}

publicvoid setX(Object x) {

this.x = x;

}

public Object getY() {

return y;

}

publicvoid setY(Object y) {

this.y = y;

}

 

 

 

}

  

public class GenericDemo01 {

  

public staticvoid 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;

}

publicvoid setX(T x) {

this.x = x;

}

public T getY() {

return y;

}

publicvoid setY(T y) {

this.y = y;

}

 

}

  

public class GenericDemo01 {

  

public staticvoid 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】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值