java自定义泛型_Java自定义泛型

上一小节讲解了在集合上如何使用泛型,那么在程序中是否能自定义泛型呢? 假设要实现一个简单的容器,用于缓存程序中的某个值,此时在这个容器类中势必要定义两个方法save()和get(),一个用于保存数据,另一个用于取出数据,这两个方法的定义如下:void save(参数类型参数){……}

返回值参数类型get(){……}

为了能存储任意类型的对象,save()方法的参数需要定义为Object类型,同样get()方法的返回值也需要是Object类型。但是当使用get()方法取出这个值时,有可能忘记当初存储的是什么类型的值,在取出时将其转换为String类型,这样程序就会发生错误。这种错误是很麻烦的,为了避免这个问题,就可以使用泛型。

如果在定义一个类CachePool时使用声明参数类型(T 其实就是Type的缩写,这里也可以使用其他字符,为了方便理解都定义为T),将save()方法的参数类型和get()方法的返回值类型都声明为T,那么在存入元素时元素的类型就被限定了,容器中就只能存入这种T 类型的元素,在取出元素时就无须进行类型转换。接下来通过一个案例来看一下如何自定义泛型,如:class cachePool { // 在创建类时,声明参数类型为T

T temp;

public void save(T temp) { // 在创建save()方法时,指定参数类型为T

this.temp = temp;

}

public T get() { // 在创建get()方法时,指定返回值类型为T

return temp;

}

}

public class Example {

public static void main(String[] args) {

// 在实例化对象时,传入参数为Integer 类型

cachePool pool = new cachePool();

pool.save(new Integer(1));

Integer temp = pool.get();

System.out.println(temp);

}

}

运行结果:1

例中,在定义CachePool类时,声明了参数类型为T,在实例化对象时通过将参数T 指定为Integer类型,同时在调用save()方法时传入的数据也是Integer类型,那么调用get()方法取出的数据自然就是Integer类型,这样做的好处是不需要进行类型转换。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值