Java 泛型方法、泛型类、通配符、通配符上下限
泛型方法
泛型方法定义规则:
- 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前。
- 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。
- 类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。
- 泛型方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)
泛型方法举例:
public <T> T gp(T t){
return t;
}
public <T> void gp2(T t){
System.out.println(t);
}
public <T,E> boolean gp3(T t,E e){
return t.equals(e);
}
泛型类
泛型类定义规则:
- 在类名后面添加类型参数声明部分,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开
泛型类举例:
public class Main {
public static void main(String[] args) {
GP<String> gp=new GP<String>();
gp.setT("gp");
System.out.println(gp.equals("gp"));
}
}
class GP<T>{
private T t;
public void setT(T t){
this.t=t;
}
public boolean tt(T t1){
return t.equals(t1);
}
}
仿照List使用就可以了。
类型通配符
- 类型通配符一般是使用?代替具体的类型参数。例如 List<?> 在逻辑上是List<String>,List<Integer> 等所有List<具体类型实参>的父类。
通配符上限 <? extends T>
- <? extends T>表示该通配符所代表的类型是T和T类型的子类。比如:List<? extends Number>
通配符下限 <? super T>
- <? super T>表示该通配符所代表的类型是T和T类型的父类。比如:List<? super Number>
菜鸟教程:http://www.runoob.com/java/java-generics.html
Java 泛型方法、泛型类、通配符、通配符上下限的更多相关文章
- Java泛型方法与泛型类的使用------------(五)
泛型的本质就是将数据类型也参数化, 普通方法的输入参数的值是可以变的,但是类型(比如: String)是不能变的,它使得了在面对不同类型的输入参数的时候我们要重载方法才行. 泛型就是将这个数据类型也搞 ...
- Java泛型中的通配符T,E,K,V
Java泛型中的通配符T,E,K,V 1.泛型的好处 2.泛型中的通配符 2.1 T,E,K,V,? 2.2 ?无界通配符 2.3 上界通配符 < ? extends E> 2.4 下界通 ...
- Java泛型中的通配符
Java泛型中的通配符可以直接定义泛型类型的参数.而不用把该函数定义成泛型函数. public class GenericsTest { public static void main(String[ ...
- 获取Spring容器中Bean实例的工具类(Java泛型方法实现)
在使用Spring做IoC容器的时候,有的类不方便直接注入bean,需要手动获得一个类型的bean. 因此,实现一个获得bean实例的工具类,就很有必要. 以前,写了一个根据bean的名称和类型获取b ...
- Java 泛型-泛型类、泛型方法、泛型接口、通配符、上下限
泛型: 一种程序设计语言的新特性,于Java而言,在JDK 1.5开始引入.泛型就是在设计程序的时候定义一些可变部分,在具体使用的时候再给可变部分指定具体的类型.使用泛型比使用Object变量再进行强 ...
- Java 基础 - 泛型类/泛型方法/类型通配符'?' 的用法及栗子
笔记: /**1.定义一个PairTest泛型类, 测试泛型 类 Pair的用法 * class Pair<T>{ * private T first; * private T secon ...
- java 声明多个泛型类型和通配符
若一个类中多个字段需要不同的泛型声明,则在声明类的时候指定多个泛型类型即可: 格式: public interface IDAO<PK, T> { PK add(T t); void re ...
- Java编程思想:通配符(后面有两个小节,研究的不够深入)
import java.util.*; public class Test { public static void main(String[] args) { } } /* 15.9 边界 要点: ...
- JAVA 泛型中的通配符 T,E,K,V,?
前言 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型. 泛型的本质是参数化类型,也就是说所操作的数据 ...
随机推荐
- layui---表单验证
使用layui,使用它的表单验证也是比不可少的,下面就来总结下: <!-- 不用form 用div也可以 --> <form class="layui-form" ...
- 关于Redis 应用 的一些 感悟
最近在项目中 使用了 Redis技术
- memoization提升递归效率
从开通博客到目前为止,也有一年了,刚开始的写了一篇工作的感想,然后就一直不知道写什么,看园子里的文章实在是很专业,怕自己写的太水.但是,写一些东西总归是好的,于是就当作是记笔记一样,开始写第一篇技术类 ...
- oracle 字符转换成数字
1>函数转换 select nvl2(translate(a.data, '\1234567890.', '\'), null, a.data) n, a.data from rpt_detai ...
- C语言函数strstr
函数原型: extern char *strstr(char *str1, const char *str2); 语法: * strstr(str1,str2) 参数: str1: 被查找目标 ...
- Oracle课程档案,第八天
存储管理 查询块的大小:show parameter db_block_size database:数据库 tablespace:表空间 datafile:数据文件 segments:段 extent ...
- spark-sql(spark sql cli)客户端集成hive
1.安装hadoop集群 参考:http://www.cnblogs.com/wcwen1990/p/6739151.html 2.安装hive 参考:http://www.cnblogs.com/w ...
- Bom 字符串的问题
不含 BOM 的 UTF-8 才是标准形式",的确是这样,无BOM使用得更多些,所以个人还是推荐一般情况下用无BOM的形式吧,除非有问题的时候,再考虑换有BOM的.Windows系统保存的都 ...
- Linux下的文件系统2
2017-03-13 上文针对VFS的基本信息做了介绍,并简单介绍了VFS涉及的几个数据机构,本节结合LInux源码,对各个结构之间的关系进行分析. 一.总体架构图 总体架构图如上图所示,结合进程访问 ...
- 数据库join操作(MySQL)
左连接,右连接,内连接 1.原始表:左表user_t,右表user_info 2.执行连接 #LEFT JOIN ; #RIGHT JOIN ; #INNER JOIN ; 2.1左连接:以左边为主 ...