泛型深入(上)

泛型概述

  • 泛型:是JDK5引入的特性,可以在编译阶段约束操作的数据类型,并进行检查。
  • 泛型的格式:<数据类型>
  • 注意:泛型只能支持引用数据类型

没有使用泛型的时候:

1.如果我们没有给集合指定类型,默认认为所有的数据类型都是Object类型

2.此时可以往集合添加任意的数据类型

3.坏处就是我们在获取数据的时候,无法使用他的特有行为

4.这种时候就推出了泛型,可以把添加数据的时候就把类型进行统一

好处:

1.统一数据类型

2.在运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为在编译阶段类型就确定下来了

Java中的而泛型其实是一个伪泛型,因为只是在存的时候做了个数据判断,实际上存进去的还是Object类型的数据

细节:

1.泛型中不能写基本数据类型,必须写他的包装类

2.指定泛型的具体类型后,传递数据是,可以传入该类型或者其子类型(继承)

3.如果不写泛型,类型默认的是Object

泛型类

  • 使用场景:当一个类中,某个变量的数据类型不确定时,就可以定义带有泛型的类、
  • 格式: 修饰符 class 类名<类型>{}
  • 例如:public class ArrayList{} 创建该类对象时,E就确定类型

此处的E可以理解为变量,但是不是用来记录数据的,而是记录数据的类型,可以写成:E,T,K,V等

泛型方法

方法中形参类型不确定时,可以使用类后面定义的泛型

例如:

public<E> boolean add(E e){ return true; }

方法一:使用类后面定义的泛型 (所有方法都可以用)

方法二:在方法声明定义自己的泛型 (只有本方法能用)

泛型方法类型练习

import java.util.ArrayList; public class Test { public static void main(String[] args) { //定义一个工具类:ListUtil //类中定义一个静态方法addAll,用来添加多个集合的元素 ArrayList<String> list=new ArrayList<>(); ListUtil.addAll(list,"aaa","bbb"); System.out.println(list); } }
import java.util.ArrayList; public class ListUtil<E> { private ListUtil(){} public static<E> void addAll(ArrayList<E> list,E...e){ for (E element:e) { list.add(element); } } }

泛型接口

格式:修饰符 interface 接口名<类型>{}

重点:如何使用一个带泛型的接口

方式1:实现类给出具体类型

方式2:实现类延续泛型,创建对象时候再确定

方式1代码演示:

public class Demo1 { public static void main(String[] args) { /*方式1:实现类给出具体类型 方式2:实现类延续泛型,创建对象时候再确定*/ MyArrayList2 list=new MyArrayList2(); list.add("123"); } }
import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ListIterator; public class MyArrayList2 implements List<String> { @Override public int size() { return 0; } @Override public boolean isEmpty() { return false; } @Override public boolean contains(Object o) { return false; } @Override public Iterator<String> iterator() { return null; } @Override public Object[] toArray() { return new Object[0]; } @Override public <T> T[] toArray(T[] a) { return null; } @Override public boolean add(String s) { return false; } @Override public boolean remove(Object o) { return false; } @Override public boolean containsAll(Collection<?> c) { return false; } @Override public boolean addAll(Collection<? extends String> c) { return false; } @Override public boolean addAll(int index, Collection<? extends String> c) { return false; } @Override public boolean removeAll(Collection<?> c) { return false; } @Override public boolean retainAll(Collection<?> c) { return false; } @Override public void clear() { } @Override public String get(int index) { return null; } @Override public String set(int index, String element) { return null; } @Override public void add(int index, String element) { } @Override public String remove(int index) { return null; } @Override public int indexOf(Object o) { return 0; } @Override public int lastIndexOf(Object o) { return 0; } @Override public ListIterator<String> listIterator() { return null; } @Override public ListIterator<String> listIterator(int index) { return null; } @Override public List<String> subList(int fromIndex, int toIndex) { return null; } }

方式2代码演示:

MyArrayList3<String> list1=new MyArrayList3<>();
public class MyArrayList3<E> implements List<E>

__EOF__

本文作者七岁就很浪
本文链接https://www.cnblogs.com/qisui/p/16875443.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   喜欢七岁就很浪  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
  1. 1 青石巷 魏琮霏
  2. 2 イエスタデイ(翻自 Official髭男dism) 茶泡饭,春茶,kobasolo
  3. 3 世间美好与你环环相扣 柏松
  4. 4 形容 沈以诚
  5. 5 把回忆拼好给你 王贰浪
  6. 6 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  7. 7 纸短情长 烟把儿
  8. 8 心做し 双笙(陈元汐)
  9. 9 盗将行 花粥,马雨阳
  10. 10 A Little Story Valentin
  11. 11 心似烟火 陈壹千
  12. 12 烟袋斜街 接个吻,开一枪,SaMZIng
  13. 13 还是分开 张叶蕾
把回忆拼好给你 - 王贰浪
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 童子-T/Shingo.S

作曲 : 童子-T

编曲 : 闫津

采样曲:願い~あの頃のキミへ~

中文填词:一只然

OP(原属词曲版权公司):テレビ東京ミュージック 东京电视台音乐

本作品经过原词曲作者以及版权公司授权

我们之间的回忆

我们之间的回忆

全部都小心地收集

我总是偷偷地哭泣

像倦鸟失了归期

但愿我相信的爱情

但愿我相信的爱情

结局紧握在我手心

时光匆匆却没有遗失过去

希望我们 有光明的未来

希望我们 有光明的未来

还有能够装下星空的期待

可现实为何让我感到如此懈怠

总怀念相遇时我们无视落叶和人海

是你让我勇敢不再像颗尘埃

是你让我勇敢不再像颗尘埃

是你常帮我照料装着梦的盆栽

每一天我们都是如此愉快

一直到天色渐晚看着落日无奈离开

我知道你爱集邮爱笑甚至爱发呆

我知道你爱集邮爱笑甚至爱发呆

我知道你怕草虫还有夜晚的妖怪

我喜欢你有一点心不在焉的状态

看起来像个回到七岁时候的小孩

该如何将我这份感情向你告白

该如何将我这份感情向你告白

喜欢却又不敢爱

直到整个宇宙

在为我焦虑失神慌张之中醒来

就像是黑暗过后黎明盛开

我们之间的回忆

我们之间的回忆

全部都小心地收集

我总是偷偷地哭泣

像倦鸟失了归期

但愿我相信的爱情

结局紧握在我手心

时光匆匆却没有遗失过去

那天你在雨后街角答应接受我的爱

那天你在雨后街角答应接受我的爱

那一刻我的世界有了色彩

这一生无法忘记关于澄蓝色的你

像一份礼物悄然呈现在我的境遇

我们从清晨起玩一整天游戏

到夜晚一起看我最爱的剧

能够拥有这些已足够幸运

我已经不再期待其他什么东西

我们也经常争执互相不接电话

我们也经常争执互相不接电话

在同一房间终于呼叫冷漠抵达

也曾想过以后生活没有人牵挂

把爱扔掉只剩一块残酷伤疤

而那些你送我的梦,教我折的花

而那些你送我的梦,教我折的花

逃亡的盛夏

在夜空隐没之际为我点燃烟花

寂寞时让我把快乐拼起来吧

我们之间的回忆

我们之间的回忆

全部都小心地收集

我总是偷偷地哭泣

像倦鸟失了归期

但愿我相信的爱情

结局紧握在我手心

时光匆匆却没有遗失过去

我们可以就像是孩子一样成长

我们可以就像是孩子一样成长

永远无所畏惧义无反顾向着未知的前方

原来我们每天努力长成看似大人的模样

为了可以一起跨越山和海洋

那时的我每天都祈祷 实现这个梦想

现在的你还好吗

现在的你还好吗

是否还会像从前一样的爱笑

现在的你还好吗

当你径直在我面前坦言放下

现在的你还好吗

是否像从前一样有无限的温柔啊

现在的你还好吗

愿你能保持月亮般的心,要爱自己啊

我们之间的回忆

我们之间的回忆

全部都小心地收集

我总是偷偷地哭泣

像倦鸟失了归期

但愿我相信的爱情

但愿我相信的爱情

结局紧握在我手心

时光匆匆却没有遗失过去

独自收集两个人之间的回忆

独自收集两个人之间的回忆

即使每当到这时候我都会哭泣

为何一切,变得如此,无法回到过去

但我仍愿意感谢你给过我爱情

但我仍愿意感谢你给过我爱情

每一场风景都是我们爱的证明

就算如今,天各一方,祝你余生动听啊

独自收集两个人之间的回忆

独自收集两个人之间的回忆

即使每当到这时候我都会哭泣

为何一切,变得如此,无法回到过去

但我仍愿意感谢你给过我爱情

但我仍愿意感谢你给过我爱情

每一场风景都是我们爱的证明

就算如今,天各一方,把回忆拼好给你

企划:谢宇航 / 牛雪吟 / 裘小静

企划:谢宇航 / 牛雪吟 / 裘小静

制作人:王佳依

监制:姚政

录音:陈程

缩混:陈程

封面设计:刘馨宇

网易云音乐特别企划“听,海风”

本歌曲来自〖网易音乐人〗

本歌曲来自〖网易音乐人〗

10亿现金激励,千亿流量扶持!

合作:st399@vip.163.com }

点击右上角即可分享
微信分享提示