java通用基础泛型

java中的泛型  T,clas<T>,class<?>,<T> T

理解泛型就要理解java的组成

好多人对泛型的使用一脸迷糊的原因,就是你对java的基本组成不了解。并且使用这种模式总是给我们一种模式的感觉。

其实,主要静心下来,你就能找到规律,接下面我们先从分析入手,给你们讲解干货。

java 组成:java语言在我们实际开发中有这么几种概念。类,对象,形参,返回类型,返回值。等。因为这节我们主要针对的目标就是这几个。所以暂时列取这几种,

这也是泛型在我们实际开发中常用的地方。那就是大白话来讲。如何用泛型来表示我们这几个概念。泛型如何表示类,如何表示对象。如何表示形参,如何表示返回类型,返回值。

 

是不是有种突然明白一切的概念。对的,接下来我们就来讲解。用什么特殊符号来表示。讲解之前,在说一下,泛型的生命周期:

 

java是两种机制的语言。需要两种执行器:1.解释器;2.编译器

以前对这两种概念的模式形式,如何我们就来说一下解释器。这也是我们这次讲解的泛型生命周期。也是说,泛型是生存在解释器之中的一种,编码规范。

这里面就是我们解释.class文件的过程。我们的所有的一切操作都是在这个范围之内进行操作完成的。

 

好了,讲解了这么多的干货,接下来我们就来分析一下,泛型的几种类型表示吧。

一.区别

单独的T 代表一个类型 ,而 Class<T>代表这个类型所对应的类, Class<?>表示类型不确定的类

E - Element (在集合中使用,因为集合中存放的是元素)
 T - Type(Java 类)
 K - Key(键)
 V - Value(值)
 N - Number(数值类型)
 ? -  表示不确定的java类型

举例说明: 
Set<T> 表示 集合里 是   T类的实例 
List<E> 表示  集合里 是  E类的实例 
List<?> 表示 集合里的对象类型不确定,未指定 
List 同 List<?> 是一样的。 

泛型的作用: 
1、用泛型: 
List<T> list=new ArrayList<T>();  
T t=list.get(0);  

2、不用泛型: 
List  list=new ArrayList();  
T t=(T)list.get(0);
复制代码

上面解释了,什么是类型,什么是类 。什么是类型的类 概念;

二、如何创建一个Class<T>类型的实例?

      就像使用非泛型代码一样,有两种方式:调用方法 Class.forName() 或者使用类常量X.class。      Class.forName() 被定义为返 回 Class<?>。另一方面,类常量 X.class 被定义为具有类型 Class<X>,所 以 String.class 是Class<String> 类型的。

三、方法中为什么需要<T> T修饰呢

泛型的声明,必须在方法的修饰符(public,static,final,abstract等)之后,返回值声明之前。

public static <T> T request2Bean(HttpServletRequest request,Class<T> clazz){}

其中第一个<T>是与传入的参数Class<T>相对应的,相当于返回值的一个泛型,后面的T是返回值类型,代表方法必须返回T类型的(由传入的Class<T>决定)

 

上面完整的解释了java的泛型的几种提现。还有什么不明白的嘛,感觉实战起来。

 

posted @ 2020-04-17 09:12  技术专家  阅读(583)  评论(0)    收藏  举报