写一个java泛型_Java泛型详解

为什么要用泛型?

泛型程序的设计主要是为了编写的代码可以被不同的对象重用。

最简单的例子就是ArrayList。我们不能为每个对象写一个ArrayList,为了适用于所有对象,ArrayList被设计为泛型类。有人说不用泛型,用Object不就可以了?但是用Object,意味着在具体对象面前你又要强制类型转换。

泛型类

泛型类就是又一个或多个类型变量的类。

下面定义一个泛型的坐标类。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public class Point{privateT x;privateT y;publicT getX() {returnx;

}public voidsetX(T x) {this.x =x;

}publicPoint(T x, T y) {this.x =x;this.y =y;

}publicPoint() {

}

}

View Code

这样我们可以传入自己需要的类型,如:

Point point1 = new Point<>(1,1);

Point point2 = new Point<>(1f,1f);

泛型方法

泛型方法是指带有类型参数的方法。

classArrayUtil{public static T getMiddle(T[] array){return array[array.length/2];

}

}

泛型接口

泛型接口和泛型类用法一样,如:

public interface JavaBeanCRUD{

T getObjectById(String id);voidaddObject(T obj);voiddelObjById(String id);voidupdateObj(T obj);

}

public interface StudentDao extends JavaBeanCRUD{

}

public class StudentDaoImpl implementsStudentDao {

@OverridepublicStudent getObjectById(String id) {return null;

}

@Overridepublic voidaddObject(Student obj) {

}

@Overridepublic voiddelObjById(String id) {

}

@Overridepublic voidupdateObj(Student obj) {

}

}

简单的例子我们能看到泛型确实给我们减少了代码的重写。

类型变量的限定

如果我们需要写一个方法,实现获取集合中最大值,即用到compareTo接口。我们可以用extends限制变量的类型。如:

public static T getMax(T[] array){if(array==null || array.length==0)return null;

T max= array[0];for(T temp : array){if(max.compareTo(temp)<0)

max=temp;

}returnmax;

}

extends这里不再是我们熟悉的继承的意思了。这里约束了getMax这个方法传入的对象必须继承Comparable,否则会有编译上的错误。

一个类型变量或通配符可以有多个限定,限定之间用 ‘&’ 分开即可,如:

T extends Comparable & Serializable

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值