超硬核!阿里技术大牛肝了2晚整理的Java知识,这也太强了!
2021/5/2 12:26:49
本文主要是介绍超硬核!阿里技术大牛肝了2晚整理的Java知识,这也太强了!,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Hello,今天给各位童鞋们分享泛型方面的知识,赶紧拿出小本子记下来吧! 1.泛型的定义 1.1 什么是泛型? 泛型就是让一个类/一个方法,能够支持多种不同的数据类型。 1.2 为什么要使用泛型? 如果没有泛型机制,当前封装的数组类,只能针对int进行,如果需要针对String ,就需要在创建一个类,把里面的int的类型改成String,后续如果需要新增其他的类型,就得如法炮制。 有了泛型之后,就可以一套代码可以服务于多种类型 在上面的方式中,将存储数据的类型全部有int类型改成Object,因为Java中的Object是所有类的基类 如果把类中持有的数组写成Object[],此时是可以用来存储多种不同类型数据的。但是这样写,就得写大量的”类型转换“相关的代码。 public class MyArray { public Object[] data = null; private int size = 0; private int capacity = 10; public MyArray(){ data=new Object[capacity]; } public void add(Object data){ if(size >= capacity){ return; } this.data[size++]=data; } public Object get(int index){ return data[index]; } public static void main(String[] args) { MyArray myArray=new MyArray(); myArray.add(new Person("张三",18)); myArray.add(new Person("李四",19)); myArray.add(new Person("王五",20)); Person person=(Person)myArray.get(0); MyArray myArray2=new MyArray(); myArray2.add(new String("aaa")); myArray2.add(new String("bbb")); myArray2.add(new String("ccc")); String str=(String)myArray2.get(0); MyArray myArray3=new MyArray(); myArray3.add(new Integer(1)); Integer integer=(Integer)myArray3.get(0); } }- 使用Object来凑合完成”泛型“效果,是比较麻烦的
- 1.需要写一些类型转换的代码
- 2.类型转换的代码容易出错,缺少一些必要的类型检查。
- E表示Element
- K表示Key
- V表示Value
- N表示Number
- T表示Type
- S,U,V等等
- 1.右侧<>中的类型可以省略
- 在new MyArray2<>()对象时,<>中未明确指明类型,编译器会根据=左侧中<>的类型来推演。
- 2.左侧<>中的类型不能省略
- 编译器在推演时,是根据左侧类型来推演右侧的
- 3.虽然右侧的<>可以不用写类型,但是<>不能省略
- 上述代码会产生警告
- 类型边界:定义泛型类的时候,对未来实例化的时候传入的参数实参做出限制。
- 泛型参数这里的类型不应该随便填,要根据实际情况做出约束
这篇关于超硬核!阿里技术大牛肝了2晚整理的Java知识,这也太强了!的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Springboot应用的多环境打包项目实战
- 2024-11-25SpringBoot应用的生产发布项目实战入门教程
- 2024-11-25Viite多环境配置项目实战:新手入门教程
- 2024-11-25Vite多环境配置项目实战入门教程
- 2024-11-25Springboot应用的生产发布资料:新手入门教程
- 2024-11-25创建springboot项目资料:新手入门教程
- 2024-11-25创建Springboot项目资料:新手入门教程
- 2024-11-25JAVA创业资料:初学者必备的JAVA创业指南
- 2024-11-25Java创业资料:新手入门必备Java编程教程与创业指南
- 2024-11-25JAVA语音识别项目项目实战入门教程