文档章节

泛型

chenruibing
 chenruibing
发布于 2015/06/02 18:37
字数 460
阅读 7
收藏 0



package hanshi.net;

import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.util.*;

public class annotation {
	public static void main (String[] args)throws Exception{
		ArrayList<String> al = new ArrayList<String>();
		al.add("add");
		al.add("dfa");
		print(al.get(1));
		//Constructor cs = Class.forName("java.lang.String").getConstructor(StringBuffer.class);
				//第一种不能泛型               第二种可以泛型
		//Constructor<String> cs = String.class.getConstructor(StringBuffer.class);
		//String str = cs.newInstance(new StringBuffer("abc"));
		       //第一种和第二种前后是一样的,只不过是参数问题不同而已
		Constructor<String> cs = String.class.getConstructor(String.class);
		String str = cs.newInstance("abc");
		print(str);
		print(str.charAt(1));
		ArrayList<Integer> ai = new ArrayList<Integer>();
		ai.add(1);
		ai.add(2);
		print(ai.get(1));
		print(al.getClass() == ai.getClass());   //true   所以javac之后就脱去泛型
		ai.getClass().getMethod("add", Object.class).invoke(ai, "asd"); //反射   后去方法进行实例化
		print(ai);    //[1, 2, asd]    没有泛型限制了   在整形后面可以添加字符串类型的数据
		
		
		//ArrayList<Integer> arr[] = new ArrayList<Integet>[10];
		//这种定义方法是绝对错误的,不允许对泛型的集合类型进行数据操作
		
		/*int i1 = add(3,5);
		Number i2 = add(3,3.5);
		 Object i3 = add(3,"abc");*/
		 //如果两个参数的数据定义模板是一样的,而实际上传递进来的参数类型又是不一样的
		 //那么在使用的过程中就是对两个参数取交集
		 
		 
		 //泛型不能用于基本数据类型,第二个的操作是错误的
		 swap(new String[]{"sfa","fdg","geg"},1,2);
		// swap(new int[]{1,2,3,4,5},1,2);
		 //像add的3,5两个参数就不一样,因为没有歧义性,所以就会自动直接进行拆箱和装箱。。。
		 
		 
		 
		 //定义一个自动强制类型转化的方法。。。    注意它的强制类型转换的过程,很奇妙
		 Object obj = "adg";
		 String strr = change(obj);
		 print(strr);
	}
	public static <T> T change(Object obj){
		return (T)obj;  //返回值的泛型类型是由接受的类型所决定的。。。
	}
	public static <T> void  swap(T[] a,int i,int j){
		T t = a[i];
		a[i] = a[j];
		a[j] = t;
	}
	public static <T> T add(T a,T b){
		return null;
	}
	public static void print(Object obj){
		System.out.println(obj);
	}

}




© 著作权归作者所有

上一篇: 更新到那个版本
下一篇: 枚举
chenruibing
粉丝 12
博文 203
码字总数 109101
作品 0
潮州
私信 提问
java泛型操作复习,以及讲解在android中使用的场景

android使用泛型的地方很多,比如集成自BaseAdapter实现封装的Adapter,对常用操作进行封装,但是需要对传进来的数据进行处理,此时就使用到泛型,示例如下: public abstract class EasyAdap...

青莲居士
2016/01/13
927
0
Java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一

对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。 本文参考java 泛型详解、Java中的泛型方法、 java泛型详解 1 概述 泛型在j...

hensemlee
2018/09/23
140
0
swift4.1 系统学习二十一 泛型

/* 泛型 本节我们一起学习泛型这一概念。在项目中,多次用到了泛型,但是对它的理解总是不够透彻,运用也不熟练。 趁此机会,好好熟悉一下。 什么是泛型? 比如我们要实现一种算法,例如搜索...

小曼Study
2018/10/29
0
0
08-利用思维导图梳理JavaSE-泛型

08-利用思维导图梳理JavaSE-泛型 主要内容 1.泛型的基本概念 1.1.定义 1.2.使用前提 1.3.使用泛型的好处 2.泛型的使用 2.1.泛型类定义 2.2.泛型对象定义 2.3.泛型中的构造方法 2.4.泛型方法的...

飞鱼说编程
2018/09/20
34
0
TypeScript基础入门 - 泛型 - 泛型类型

转载 TypeScript基础入门 - 泛型 - 泛型类型 项目实践仓库 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能直接运行看到输出的结果。 后面自己在练习的时候可以这样使用 ...

durban
2018/08/28
7
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
6
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多