当前位置:网站首页>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
边栏推荐
- Global and Chinese market of oil analyzers 2022-2028: Research Report on technology, participants, trends, market size and share
- DGraph: 大规模动态图数据集
- Typescript array out of order output
- sql解决连续登录问题变形-节假日过滤
- OpenPose的使用
- OpenHarmony如何启动远程设备的FA
- Rock PI Development Notes (II): start with rock PI 4B plus (based on Ruixing micro rk3399) board and make system operation
- Unity使用UGUI设置一个简单多级水平方向下拉菜单(不需要代码)
- 易语言abcd排序
- P6774 [NOI2020] 时代的眼泪(分块)
猜你喜欢

Notice on holding a salon for young editors of scientific and Technological Journals -- the abilities and promotion strategies that young editors should have in the new era

pwm呼吸燈

上传代码到远程仓库报错error: remote origin already exists.

机器学习-感知机模型

OpenHarmony如何启动远程设备的FA

Trigger: MySQL implements adding or deleting a piece of data in one table and adding another table at the same time

PCL 点云镜像变换

Unity使用UGUI设置一个简单多级水平方向下拉菜单(不需要代码)

Penetration tool - intranet permission maintenance -cobalt strike

LeetCode 2. 两数相加
随机推荐
PWM控制舵机
Yolov5 practice: teach object detection by hand
TCP congestion control details | 2 background
大厂面试总结大全
TCP server communication process (important)
LeetCode 6. Zigzag transformation (n-shaped transformation)
电脑自带软件使图片底色变为透明(抠图白底)
Tech Talk 活动预告 | 基于Amazon KVS打造智能视觉产品
Global and Chinese markets for slotting milling machines 2022-2028: Research Report on technology, participants, trends, market size and share
LeetCode 3. Longest substring without duplicate characters
串口控制舵机转动
Thinking about absolute truth and relative truth
vscode设置删除行快捷键[通俗易懂]
Ranger (I) preliminary perception
Global and Chinese market of switching valves 2022-2028: Research Report on technology, participants, trends, market size and share
La boîte de connexion du hub de l'unit é devient trop étroite pour se connecter
How to solve the failure of printer driver installation of computer equipment
Exploration and practice of integration of streaming and wholesale in jd.com
关于举办科技期刊青年编辑沙龙——新时代青年编辑应具备的能力及提升策略的通知...
Easy language ABCD sort