当前位置:网站首页 > Java基础 > 正文

java泛型基础知识



铁子们,快扫码关注啦!或 wx搜索:“聊5毛钱的java”,关注可领取博主的Java学习视频+资料,保证都是通俗易懂的干货

之前的文章讲过了:

反射---用最直接的大白话来聊一聊Java中的反射机制

内省---Java反射——内省(Introspector)以及BeanUtils内省框架

枚举---用最直接的大白话聊一聊,Java中的枚举类你真的理解了吗

注解和自定义注解---Java中的注解以及自定义注解

接下来,本篇讲一下泛型

一、什么是泛型和泛型的作用

首先要明白的一点是:泛型是为了安全方面的考虑,泛型可以把运行时期的问题,提前暴露在编译期

JDK5以前,对象保存到集合中就会失去其特性,取出时通常要程序员手工进行类型的强制转换

这样不可避免就会引发程序的一些安全性问题。

例如:下面的代码,编译可以通过,运行时才会报错,在编译时发现不了错误

 

再例如:在遍历集合的时候,无法遍历,因为放入集合中的数据类型是不确定的

 

所以JDK5以后出现了泛型,泛型允许程序员在编写集合代码时就限制集合的处理类型,从而把原来程序运行时可能发生问题,转变为编译时的问题,以此提高程序的可读性和稳定性。

***注意:泛型是提供给javac编译器使用的,它用于限定集合的输入类型,让编译器在源代码级别上,即挡住向集合中插入非法数据。但编译器编译完带有泛型的java程序后,生成的class文件中将不再带有泛型信息,以此使程序运行效率不受到影响,这个过程称之为“擦除”

二、泛型的典型应用

(1)使用增强for循环迭代泛型集合中的元素。

 

(2)存取HashMap中的元素。

 

使用泛型时的几个常见问题:

a、使用泛型时,泛型类型须为引用类型,不能是基本数据类型

b、如果等号左右两边都用到了泛型,则泛型里的类型必须一模一样。如以下的两种就不行

ArrayList<String> list = new ArrayList<Object>();

ArrayList<Object> java泛型基础知识 list = new ArrayList<String>(); 

c、只有一边使用泛型,另一边不使用泛型是允许的。如下边的两种形式是可以的

ArrayList<String> list = new ArrayList ();

ArrayList list = new ArrayList<String>();

这么做的目的是为了兼容

举个例子

 

三、自定义泛型的语法

想使用泛型,就需要先定义泛型,泛型有两种定义的方式:

1、在方法上定义,写在返回值之前

Java程序中的普通方法、构造方法和静态方法中都可以使用泛型。

方法使用泛型前,必须对泛型进行声明,语法:<T> ,T可以是任意字母,但通常必须要大写。一般情况下大写是类型,小写是参数。

<T>需放在方法的返回值声明之前。

 

2、在类上定义,写在类名之后

除了在方法上声明泛型之外,还可以在类上声明泛型

但是需要注意的是:在类上面声明泛型,仅限于实例方法上直接使用,但是不适合静态方法,静态方法上的泛型还是需要在方法上单独定义的

例如:

 

上边就是泛型的基本语法和使用

四、使用泛型练习几个案例

(1)编写一个泛型方法,实现数组元素的交换。

 
 

最后输出结果为 a,c,b

(2)编写一个泛型方法,接收一个任意数组,并颠倒数组中的所有元素。

 
 

以上就是对泛型的一些学习和总结,如有不正确的地方,可以在评论区进行指正,一起学习一起进步,谢谢

铁子们,如果觉得文章对你有所帮助,可以点关注,点赞

也可以关注下公众号:扫码或 wx搜索:“聊5毛钱的java”,欢迎一起学习交流,关注公众号可领取博主的Java学习视频+资料,保证都是干货

版权声明


相关文章:

  • 传智博学谷java基础2024-10-19 15:10:02
  • 用java基础编程游戏2024-10-19 15:10:02
  • java基础能应聘什么岗位2024-10-19 15:10:02
  • java回文数基础代码2024-10-19 15:10:02
  • java语言基础整数2024-10-19 15:10:02
  • Java入门与基础算法2024-10-19 15:10:02
  • java零基础聊天室2024-10-19 15:10:02
  • Java四大基础类2024-10-19 15:10:02
  • 测试java基础2024-10-19 15:10:02
  • java零基础强制类型转换2024-10-19 15:10:02