【Java基础】泛型记录概要

xiaoxiao2021-02-28  123

泛型记录概要


泛型出现重要原因之一:创造容器类

泛型主要目的之一:指定容器持有什么类型的对象,保证编译的正确性

泛型简单实例

class GenericsClass<T>{ private T property; public GenericsClass(T property){} }

元组(tuple)

基本概念

又称数据传送对象或者信使。将一组对象直接打包存储于其中的一个单一对象,只允许往这个对象读取其中元素,但是不允许向其中存放新的对象

目的

解决仅一次方法调用返回多个对象

特性

具有任意长度存在不同类型的对象

简单二维元组

class TwoTuple<L,R>{ public final L left; public final R right; public TwoTuple(L left,R right){ this.left = left; this.right = right; } public String toString(){ return "(" + left + "," + right + ")"; } }

通过继承机制创建长度更长的元组

class ThreeTuple<L,M,R> extends TwoTuple<L,R>{ public final M middle; public TwoTuple(L left,M middle,R right){ super(left,right); this.middle = middle; } public String toString(){ return "(" + left + "," + middle + "," + right + ")"; } }

使用元组

static TwoTuple<String,Object> getTuple(){ return new TwoTuple<String,Object>("key","value"); } public static void main(String[] args) { TwoTuple<String,Object> tuple = getTuple(); System.out.println(tuple); }

泛型接口

生成器(Generator)就是典型的泛型接口应用,用来负责创建对象

生成器(Generator)和工厂模式(FactoryPattern)都是负责创建对象的,两者的区别在于前者不需要传递任何参数信息,后者则需要。

基本类型无法作为类型参数。Java提供的自动打包/拆箱机制转换

泛型方法

泛型方法可以独立于类发生变化

Class GenericClass{ public <T> void genericMethod(T x){ //x.getClass().getName() } }

类型参数推断:使用泛型方法不需要指明参数类型,编译器会找出具体类型

杠杆利用类型参数推断

new HashMap<Entity,List<? extends SuperClass>>() <K,V> Map<K,V> <T> List<T>

类型参数推断避免了重复的泛型参数列表

泛型用于匿名内部类

泛型的好处之一是简单而安全的创建复杂模型

在泛型内部,无法获得任何有关泛型参数类型的信息

转载请注明原文地址: https://www.6miu.com/read-29663.html

最新回复(0)