文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

java中generic有什么用

2023-05-30 20:21

关注

这篇文章将为大家详细讲解有关java中generic有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一介绍:

在JavaSE1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。

泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

二、泛型参数:

class Gen<T> {private T ob;//定义泛型成员变量public Gen(T ob) {this.ob = ob;}public T getOb() {return ob;}public void setOb(T ob) {this.ob = ob;}public void showType() {System.out.println("T的实际类型是: " + ob.getClass().getName());}}public class GenericParameter {public static void main(String[] args){//定义泛型类Gen的一个Integer版本Gen<Integer> intOb=new Gen<Integer>(100);intOb.showType();int i= intOb.getOb();System.out.println("value= " + i);System.out.println("----------------------------------");//定义泛型类Gen的一个String版本Gen<String> strOb=new Gen<String>("Hello Dylan!");strOb.showType();String s=strOb.getOb();System.out.println("value= " + s);}}

output:

T的实际类型是: java.lang.Integer
value= 100
----------------------------------
T的实际类型是: java.lang.String
value= Hello Dylan!

三、泛型类:

class GenericsFoo<T> {private T x;public GenericsFoo(T x) {this.x = x;}public T getX() {return x;}public void setX(T x) {this.x = x;}}public class GenericClass {public static void main(String args[]){GenericsFoo<String> strFoo=new GenericsFoo<String>("Hello Generics!");GenericsFoo<double> douFoo=new GenericsFoo<double>(new double("33"));GenericsFoo<Object> objFoo=new GenericsFoo<Object>(new Object());System.out.println("strFoo.getX="+strFoo.getX());System.out.println("douFoo.getX="+douFoo.getX());System.out.println("objFoo.getX="+objFoo.getX());}}

output:

strFoo.getX=Hello Generics!
douFoo.getX=33.0
objFoo.getX=java.lang.Object@1d0fafc

四 限制泛型:

import java.util.ArrayList;import java.util.Collection;class CollectionGenFoo<T extends Collection> {private T x;public CollectionGenFoo(T x) {this.x = x;}public T getX() {return x;}public void setX(T x) {this.x = x;}}public class GenericRestrict {public static void main(String[] args) {CollectionGenFoo<ArrayList> listFoo = null;listFoo = new CollectionGenFoo<ArrayList>(new ArrayList());CollectionGenFoo<? extends Collection> listFoo1 = null;listFoo1=new CollectionGenFoo<ArrayList>(new ArrayList());System.out.println("实例化成功!");}}

output:
实例化成功!

五 泛型方法:

public class GenericFunction {public <T> void f(T x) {System.out.println(x.getClass().getName());}public static void main(String[] args) {GenericFunction ea = new GenericFunction();ea.f(" ");ea.f(10);ea.f('a');ea.f(ea);}}

output:
java.lang.String
java.lang.Integer
java.lang.Character
GenericFunction

-----------------------------
dylan presents.

关于“java中generic有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯