当前位置:网站首页>What is generics- Introduction to generics
What is generics- Introduction to generics
2022-07-02 16:56:00 【Full stack programmer webmaster】
Hello everyone , I meet you again , I'm your friend, Quan Jun .
Catalog
1、 What is generics ?
Generics are actually passing types as parameters , Generics allow programmers to write code using types that are specified later , When instantiating the class, pass the desired type as a parameter , To indicate these types .
Why introduce generics ?
for example : Implement a sequence table by yourself
public class MyArrayList {
public int[] elem;
public int usedSize;
public MyArrayList() {
this.elem = new int[10];
}
// add Method
public void add(int val) {
// Capacity expansion will not be considered for the time being , This is just to talk about generics
elem[usedSize++] = val;
}
// get Method
public int get(int pos) {
return elem[pos];
}
}
You can see here , When using the custom order table above , We Only add int type The elements of , We know java Sequence table in set , You can add Any kind of The data of , How to achieve it ? Here we try to make int Type changed to Object type , This ensures that any type can be passed in .
public class MyArrayList {
public Object[] elem;
public int usedSize;
public MyArrayList() {
this.elem = new Object[10];
}
// add Method
public void add(Object val) {
// Capacity expansion will not be considered for the time being , This is just to talk about generics
elem[usedSize++] = val;
}
// get Method
public Object get(int pos) {
return elem[pos];
}
}
main Method to add data to an object , You can add any type of data . however , When data needs to be retrieved , Because the return is Object type , Strong conversion is required to receive... With the corresponding type , Very trouble .
public static void main(String[] args) {
MyArrayList myArrayList = new MyArrayList();
myArrayList.add(1);
myArrayList.add("hello");
int array1 = (int)myArrayList.get(0);
String array2 = (String)myArrayList.get(1);
}
So here's the question , Do you have to turn around every time to receive it , Can we not make a strong turn ? At this time, we think of creating an instance object , You can pass the desired type as a parameter , Let this object store all the data of the incoming type , So when you take it out , You can make it clear that all data in the object is of this type , There's no need for forced rotation . This introduces generics .
public class MyArrayList<E> {
// When writing a program , Do not specify a specific type , While using <E> there E For the time being
// The specific type is passed in when instantiating the object
public E[] elem;
public int usedSize;
public MyArrayList() {
// The writing here is not particularly accurate , The reflection mechanism should be used , Let's start here
this.elem = (E[])new Object[10];
}
// add Method
public void add(E val) {
// Capacity expansion will not be considered for the time being , This is just to talk about generics
elem[usedSize++] = val;
}
// get Method
public E get(int pos) {
return elem[pos];
}
}
public static void main(String[] args) {
MyArrayList<Integer> myArrayList1 = new MyArrayList<>();
myArrayList1.add(1);
myArrayList1.add(3);
// myArrayList1.add("world");// There will be an error , Because the incoming data is not of the specified type , So generics also have the function of automatically checking types
int I1 = myArrayList1.get(0);
MyArrayList<String> myArrayList2 = new MyArrayList<>();
myArrayList2.add("hello");
myArrayList2.add("world");
String s1 = myArrayList2.get(0);
}
This ensures that any type of data can be passed in , At the same time, you don't need to turn when you take it out ! The significance of generics : 1、 Automatically check the type 2、 Automatically cast types
So here MyArrayList What is the type of the corresponding object ? yes MyArrayList< Integer > Like that ?
You can see here , The types of objects created by the instance are MyArrayList, and <> The content in does not participate in the composition of generic types , that <> Where are the types inside ? It's time to understand how generics work .
2、 How generics are compiled
An important difference between arrays and generics is how they force type checking . say concretely , Arrays store and check type information at run time . however , Generics check for type errors at compile time , And there is no type information at run time .
Compilation mechanism of generics : Erasure mechanism
At compile time , take MyArrayList Medium E It's rubbed Object type .
stay main The method has been rubbed into MyArrayList type .
Reference resources : stay java Create a generic array
Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/147849.html Link to the original text :https://javaforall.cn
边栏推荐
- LeetCode 2. 两数相加
- LeetCode 6. Z 字形变换 (N字形变换)
- PhD Debate-11 预告 | 回顾与展望神经网络的后门攻击与防御
- Day 18 of leetcode dynamic planning introduction
- Student course selection system (curriculum design of Shandong Agricultural University)
- PCL 点云镜像变换
- Just a coincidence? The mysterious technology of apple ios16 is even consistent with the products of Chinese enterprises five years ago!
- linux下配置Mysql授权某个用户远程访问,不受ip限制
- MySQL port
- 配置基于接口的ARP表项限制和端口安全(限制用户私自接入傻瓜交换机或非法主机接入)
猜你喜欢
PCL 点云镜像变换
串口控制舵机转动
Penetration tool - intranet permission maintenance -cobalt strike
OpenPose的使用
Unity使用UGUI设置一个简单多级水平方向下拉菜单(不需要代码)
Masa framework - DDD design (1)
go-zero微服务实战系列(八、如何处理每秒上万次的下单请求)
PCL point cloud image transformation
How to solve the failure of printer driver installation of computer equipment
July 1st gift: Yi Jingjie's "hundred day battle" ended perfectly, and the database of Guiyang bank was sealed in advance
随机推荐
L'explosion de John utilise l'encodage d'entrée par défaut: UTF - 8 Loaded 1 password Hash (bcrypt [blowfish 32 / 64 X3])
Global and Chinese market of desktop hot melt equipment 2022-2028: Research Report on technology, participants, trends, market size and share
基于多元时间序列对高考预测分析案例
618深度複盤:海爾智家的制勝方法論
Cell: Tsinghua Chenggong group revealed an odor of skin flora. Volatiles promote flavivirus to infect the host and attract mosquitoes
什么是泛型?- 泛型入门篇
linux下配置Mysql授权某个用户远程访问,不受ip限制
电脑自带软件使图片底色变为透明(抠图白底)
System Verilog implements priority arbiter
上传代码到远程仓库报错error: remote origin already exists.
Résumé de l'entrevue de Dachang Daquan
路由模式:hash和history模式
Student course selection system (curriculum design of Shandong Agricultural University)
七一献礼:易鲸捷 “百日会战”完美收官 贵阳银行数据库提前封板
基于Impala的高性能数仓实践之执行引擎模块
js删除字符串中的子串
Library management system (Shandong Agricultural University Curriculum Design)
Digital IC hand tearing code -- voting device
Cloud native cicd framework: Tekton
July 1st gift: Yi Jingjie's "hundred day battle" ended perfectly, and the database of Guiyang bank was sealed in advance