美文网首页
泛型,Java架构师所必备的重要技能之一,一张导图看明白

泛型,Java架构师所必备的重要技能之一,一张导图看明白

作者: 程就人生 | 来源:发表于2022-01-09 10:32 被阅读0次

这篇文章主要说泛型,顺便也把数据类型整理一下,在做通讯协议的时候,一个不同类型的数字占几个字节,突然想不起来,也可以参考一下。

Java的数据类型,如下图所示,基本数据类型、封装类型、引用类型、泛型,泛型是Java5之后新增的技术之一。

Java数据类型整理 数值型整理

封装类型,是对基本数据类型的封装,比如Byte:

//封装操作
Byte aa = Byte.valueOf("1");
//解封操作
byte bb = aa.byteValue();
封装类型图解

接下来看泛型,它的本质、实现过程、目的、使用范围、特点如下图所示:


泛型图解

泛型中的标记符和使用如下图所示:


标记符整理

T(Type) Java类型的使用示例:


//T 泛型类
public class ClassDemo<T> {
  private T name;//类型是未知的  
  public ClassDemo(T name) {
    this.name = name;
  }  
  public T getName() {
    return name;
  }  
  public void setName(T name) {
    this.name = name;
  }
}
//T 泛型接口
interface A<T>{
  void display(T value); 
  T getValue(T v);
}
//用法1,未对泛型接口指定具体类型
public class Person implements A{
  @Override
  public void display(Object obj) {
    System.out.println();
  }
  @Override
  public Object getValue(Object v) {
    return null;
  }  
}
//用法2,为泛型接口指定具体类型
public class Person implements A<String>{
  @Override
  public void display(String value) {
  }
  @Override
  public String getValue(String v) {
    return null;
  }
}
//T 泛型方法1,可以传任意类型的数组
public <T> void forArrGenric(T[] arr) {
  for(int i=0; i < arr.length; i++) {
    System.out.println(arr[i]);
  }
}
  //T 泛型方法2
public <T> void demo1(T name){ 
  System.out.println(name); 
}
//T 泛型方法3
public <T> T demo2(T t){ 
  return t;
}

K(Key)键,V(Value)值 天生就是一对,看看Map的源码是怎么使用的:

public interface Map<K,V> {
   // 获取value
   V get(Object key);
   // 通过key填充value
   V put(K key, V value);
   // 通过key删除对应的value
   V remove(Object key);
   // ....更多源码省略,更自行查看
}

E(Element),看看List集合是怎么使用的:

public interface List<E> extends Collection<E> {
   // 遍历集合中的每一个元素
   Iterator<E> iterator();
   // 添加全部的原生
   boolean addAll(Collection<? extends E> c);
   // 移除某个元素
   boolean removeAll(Collection<?> c);
   // 通过索引获取某个元素
   E get(int index);
   // 在指定位置添加元素
   E set(int index, E element);
   // ....更多源码省略,更自行查看
}

Number 和 ?通配符的结合使用:

public interface List<E> extends Collection<E> {
   // 遍历集合中的每一个元素
   Iterator<E> iterator();
   // 添加全部的原生
   boolean addAll(Collection<? extends E> c);
   // 移除某个元素
   boolean removeAll(Collection<?> c);
   // 通过索引获取某个元素
   E get(int index);
   // 在指定位置添加元素
   E set(int index, E element);
   // ....更多源码省略,更自行查看
}

最后总结:
经过一番整理,对泛型的了解和使用又加深了一步,思维导图加上代码,搞不清楚的时候过来瞅一眼,使用起来妥妥的;熟练使用泛型技术,又多了一项作为架构师的利器。

参考文档:
https://www.runoob.com/java/java-generics.html
https://zhuanlan.zhihu.com/p/154595559
https://www.cnblogs.com/fwnboke/p/8529670.html

相关文章

  • 泛型,Java架构师所必备的重要技能之一,一张导图看明白

    这篇文章主要说泛型,顺便也把数据类型整理一下,在做通讯协议的时候,一个不同类型的数字占几个字节,突然想不起来,也可...

  • 最强整理:一线互联网移动架构师筑基必备技能之Java篇

    移动架构师筑基必备技能 一、深入Java泛型 泛型的作用与定义通配符与嵌套泛型上下边界RxJava中泛型的使用分析...

  • 深入Java泛型,通配符与嵌套

    上一节: 架构师筑基必备技能:深入Java泛型,泛型的作用与定义 本文作者:我俩绝配本文出处:博客园原文链接:ht...

  • Kotlin 泛型之类型擦除

    一. Java 泛型的优点 泛型是 Java 5 的重要特性之一。泛型的本质是参数化类型,也就是说所操作的数据类型...

  • 浅析~Java泛型

    1、Java中的泛型 思维导图 1.1、为什么要使用泛型 例如下面这个例子,如果list不加泛型,先向其添加两个S...

  • 开发12年Android工程师经验谈:架构师筑基必备技能(深入

    一、架构师筑基必备技能的重要性 Android应用是由Java语言进行开发的,SDK也是由Java语言编写,所以我...

  • Kotlin(四)泛型

    4.1 泛型:类型安全 对比java的历史,java1.5 开始引入的 泛型。同样,Kotlin泛型也是很重要的 ...

  • java 泛型解析

    Java 泛型 1、泛型的精髓是什么 2、泛型方法如何使用 概述: 泛型在java中具有重要地位,在面向对象编程模...

  • 泛型

    java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一Java泛型深入理解加泛型面试数组的协变性与范型的不可变性

  • Java泛型(一)

    一、泛型的定义 1、什么是java泛型?泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操...

网友评论

      本文标题:泛型,Java架构师所必备的重要技能之一,一张导图看明白

      本文链接:https://www.haomeiwen.com/subject/relucrtx.html