当前位置:网站首页>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 1. 两数之和
- Machine learning perceptron model
- Deep learning image data automatic annotation [easy to understand]
- MySQL port
- Tech Talk 活动预告 | 基于Amazon KVS打造智能视觉产品
- Multi task prompt learning: how to train a large language model?
- TCP congestion control details | 2 background
- 2322. 从树中删除边的最小分数(异或和&模拟)
- 易语言abcd排序
- Bib | graph representation based on heterogeneous information network learning to predict drug disease association
猜你喜欢
Tech Talk 活动预告 | 基于Amazon KVS打造智能视觉产品
数字IC手撕代码--投票表决器
How openharmony starts FA of remote devices
Unity使用UGUI设置一个简单多级水平方向下拉菜单(不需要代码)
What if the win11 app store cannot load the page? Win11 store cannot load page
According to the atlas of data security products and services issued by the China Academy of information technology, meichuang technology has achieved full coverage of four major sectors
LeetCode 2. Add two numbers
john爆破出现Using default input encoding: UTF-8 Loaded 1 password hash (bcrypt [Blowfish 32/64 X3])
Where can I open computer administrator permissions
What is normal distribution? What is the 28 law?
随机推荐
Yyds dry goods inventory # look up at the sky | talk about the way and principle of capturing packets on the mobile terminal and how to prevent mitm
Xiaopeng P7 had an accident on rainy days, and the airbag did not pop up. Official response: the impact strength did not meet the ejection requirements
Go zero micro service practical series (VIII. How to handle tens of thousands of order requests per second)
SQL solves the problem of continuous login deformation holiday filtering
Penetration tool - intranet permission maintenance -cobalt strike
大厂面试总结大全
PCL least median square method fitting plane
Unity使用UGUI设置一个简单多级水平方向下拉菜单(不需要代码)
2322. 从树中删除边的最小分数(异或和&模拟)
lsf基础命令
PCL 最小中值平方法拟合平面
Detailed explanation of @accessories annotation of Lombok plug-in
Interview summary of large factories
R及RStudio下载安装教程(超详细)
SSM integration exception handler and project exception handling scheme
ROW_ NUMBER()、RANK()、DENSE_ Rank difference
什么是泛型?- 泛型入门篇
TCP server communication process (important)
Digital IC hand tearing code -- voting device
Multi task prompt learning: how to train a large language model?