Java 基础 - 泛型类/泛型方法/类型通配符'?' 的用法及栗子
笔记:
/**1.定义一个PairTest泛型类, 测试泛型 类 Pair的用法
* class Pair<T>{
* private T first;
* private T second;
* ............(方法get/set 全部自动生成)
* }
* 2.泛型方法的使用; 创建一个泛型方法: 格式: [public...访问修订符] [static][final] <T> void classname(T x){ ... }
* 3.类型通配符为'?',仅可以用来声明变量!不可以声明类! void showClassName(Status<?>ob) ;默认上界是 Number
*/
测试代码:
public class Test泛型 {
public static void main(String[] args){
//1.定义一个PairTest类, 测试泛型类Pair的用法
Pair<String> pair=new Pair<String>("Hello","Java");
System.out.print("first = "+pair.getFirst());
System.out.println(", second = "+pair.getSecond());
System.out.println("-----------------------------");
//2.泛型方法的使用; 创建一个泛型方法;
GenericMethod gm = new GenericMethod();
gm.showClassName("c");
gm.showClassName(1);
gm.showClassName('a');
gm.showClassName(gm);
//3.通配类型参数;
Integer inums[]={1,2,3,4,5};
Status<Integer> iobj=new Status<>(inums);
Double dnums[]={1.1,2.2,3.3,4.4,5.5};
Status<Double> dobj=new Status<>(dnums);
iobj.showClassName(iobj);
iobj.showClassName(dobj); //将void showClassName(Status<T>ob) 改为:void showClassName(Status<?>ob)
}
}
class Pair<T>{
private T first;
private T second;
public Pair() {
this.first = null;
this.second = null;
}
public Pair(T first, T second) {
this.first = first;
this.second = second;
}
public T getFirst() {
return first;
}
public void setFirst(T first) {
this.first = first;
}
public T getSecond() {
return second;
}
public void setSecond(T second) {
this.second = second;
}
}
class GenericMethod{
public <T> void showClassName(T x){
System.out.println(x+"'s classname: "+x.getClass().getName());
}
}
class Status<T extends Number>{
T[] nums;
public Status(T[] nums) {
this.nums = nums;
}
void showClassName(Status<?>ob){
System.out.println("[3] classname: "+ob.getClass().getName());
}
}
测试结果:
first = Hello, second = Java
-----------------------------
c's classname: java.lang.String
1's classname: java.lang.Integer
a's classname: java.lang.Character
任务168.GenericMethod@3567135c's classname: 任务168.GenericMethod
[3] classname: 任务168.Status
[3] classname: 任务168.Status
Java 基础 - 泛型类/泛型方法/类型通配符'?' 的用法及栗子的更多相关文章
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- Java基础之枚举类型Enum的使用
Java基础之枚举类型Enum的使用 定义 public enum AccruedCleanEnum { SPREAD("1","发票"),OTHER(&quo ...
- java基础04-数据类型扩展及面试题
java基础04-数据类型扩展及面试题讲解 public class demo02 { public static void main(String[] args){ // 一.整数拓展: 进制 二进 ...
- java基础之反射类型Type
Java在加入泛型之后,仅仅Class已经不足以描述数据的类型了,比如List<String>类型的数据,其Class的类型为List.class,但是其类型包含了泛型参数,所以java引 ...
- java里程碑之泛型--类型通配符
1,泛型与数组在子类上面的对比 在整理java泛型的类型通配符之前,我们先来研究下java在数组设计上的一个不合理.我们来看下面代码: public class Test { public stati ...
- Java基础(二) 基本类型数据类型、包装类及自动拆装箱
我们知道基本数据类型包括byte, short, int, long, float, double, char, boolean,对应的包装类分别是Byte, Short, Integer, Long ...
- Java基础_枚举类型
作用:让数据更简洁,更易读,增加代码可读性. 为了用1,2,3,4,5分别表示老师,学生,小组,班主任,后勤,可以直接设置一个变量,让roleType = 1,但这样写代码可读性差. 也可以定义一个成 ...
- Java基础:基本类型
1.基本类型 Java中有8种基本类型,分为4类,分别为: 整型:包括 byte . short. int . long 泛型:float.double 字符型:char 布尔型:boolean 2 ...
- 黑马程序员——JAVA基础之泛型和通配符
------- android培训.java培训.期待与您交流! ---------- 泛型: JDK1.5版本以后出现新特性.用于解决安全问题,是一个类型安全机制. 泛型好处: ...
随机推荐
- 【C/C++】缓冲区设计--环形队列
原文链接:http://blog.csdn.net/billow_zhang/article/details/4420789 在程序的两个模块间进行通讯的时候,缓冲区成为一个经常使用的机制. 如上图, ...
- FineReport做成之后如何在Tomcat上运行
问题描述: 自己用FineReport做成的报表画面,要在Tomcat上运行启动 第一步:下载Tomcat 网址: http://tomcat.apache.org/download-80.cgi 下 ...
- golang 切片和map查询比较
package main import ( "fmt" "time" ) var testTimeSlice = []string{"aa" ...
- [转帖]AIDA64 6.10版发布:全面支持中国兆芯、海光x86 CPU
AIDA64 6.10版发布:全面支持中国兆芯.海光x86 CPU https://www.cnbeta.com/articles/soft/892877.htm 支持国产x86了 作为硬件识别工具领 ...
- 快速创建一个SpringBoot项目并整合Mybatis
2019-09-15 一.Maven环境搭建 1.导入jar坐标 <project xmlns="http://maven.apache.org/POM/4.0.0" xml ...
- Django之ORM表操作
ORM表操作 1.ORM单表操作 首先想操作表的增删改查,需要先导入这个表,以之前创建的UserInfo表为例,在app下的views.py中导入 from app import models def ...
- ndarray笔记续
数组的索引与切片 多维数组的索引 import numpy as np arr=np.arange(1,25).reshape(2,3,4) arr # 输出 array([[[ 1, 2, 3, 4 ...
- web&http协议&django初识
1.什么是web应用 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件. 应用程序有两种模式C/S.B/S ...
- SpringBoot 第一篇:HelloWorld 跑起来
背景 金融行业从业快十年,作为银行系开发人员来说开源框架了解不多非常正常,因为银行系的运行平台,基本上不会采购小厂商集合开源框架自建的产品,竞标的产品没有几十个成功案例,你也进不了这个门槛(有关系的除 ...
- 【Transact-SQL】让人快遗忘的游标
原文:[Transact-SQL]让人快遗忘的游标 最初学SQL Server的时候,当学到游标的时候,突然有了一种亲切感,因为这种通过一个while循环,一条一条的处理数据的方式,很像学过的过程式语 ...