- 浏览: 978093 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (223)
- JDBC技术 (29)
- Java Base (21)
- SSH框架的集合 (5)
- Javascript部分 (16)
- Sping2.5框架 (6)
- Hibernate框架 (19)
- JDBC中的数据库连接 (5)
- Ajax技术应用 (9)
- Java工具包下载 (3)
- Database (4)
- Java Web (13)
- 我的生活 (4)
- Struts2 (25)
- S2SH (1)
- Prototype (1)
- jfreeChart (5)
- JPA (7)
- JBPM (1)
- JasperReport (6)
- DWR (1)
- freeMark (2)
- IBatis (2)
- FCKeditor (2)
- POI (1)
- JQuery (6)
- JSON (1)
- JavaMail (3)
- Flex (2)
- CSS收藏夹 (1)
- 润乾报表 (2)
- 开源技术 (1)
- Android (2)
- Android_UI (1)
- Android_OS (6)
- Android_OpenLibs (3)
- Volley (1)
- JS_OpenLibs (1)
- Hessian (3)
- OS (1)
最新评论
-
damoluomu:
简单易懂
Java Web开发Session超时设置 -
di1984HIT:
学习了~~~~~~
Java Web开发Session超时设置 -
lord_is_layuping:
...
Java Web开发Session超时设置 -
15111285554:
...
Java Web开发Session超时设置 -
sfg1314:
暂停后重新下载就会报错:ClientAbortExceptio ...
Java Web 文件下载之断点续传
/** * JDK1.5 泛型 * * @author 张明学 * */ public class GenericStudy { @SuppressWarnings( { "unchecked", "unused" }) public static void main(String[] args) throws Exception { // 第1点:Java的泛型仅仅只是通用Java的编译器实现的,进行全安检查,编译成class文件后没有保留泛型信息 Collection<Integer> c1 = new ArrayList<Integer>(); Collection<String> c2 = new ArrayList<String>(); // 1.1 获取c1与c2的字节码看是否相同 System.out.println("c1与c2的字节码是否相同:" + (c1.getClass() == c2.getClass()));// true c1.add(23); // 1.2 通用反射我们可以向c1中添加String类型的数据(class文件没有任何泛型) Class clazz = c1.getClass(); Method collAddMethod = clazz.getMethod("add", Object.class); collAddMethod.invoke(c1, "http://zmx.iteye.com"); for (Object obj : c1) { System.out.println(obj); } // 泛型中的?通配符:表示任何类型,它与Object是有区别的如下所示: // collection1可以存放任保类型,而collection2则只能放在Object类型 Collection<?> collection1 = new ArrayList<String>(); collection1 = new ArrayList<Integer>(); collection1 = new ArrayList<Object>(); Collection<Object> collection2 = new ArrayList<Object>(); // 泛型中的向上或向下限定 // collection3表示它可以存放Number或Number的子类 Collection<? extends Number> collection3 = null; collection3 = new ArrayList<Number>(); collection3 = new ArrayList<Double>(); collection3 = new ArrayList<Long>(); // collection4表示它可以存放Integer或Integer的父类 Collection<? super Integer> collection4 = null; collection4 = new ArrayList<Object>(); // 泛型简单使用(Map.Entry是Map的一个内部类,表法Map中存在的一个对象) Map<String, Integer> testMap = new HashMap<String, Integer>(); testMap.put("xiaobojava", 2); testMap.put("mengya", 3); testMap.put("zmx", 6); Set<Map.Entry<String, Integer>> entrySet = testMap.entrySet(); for (Map.Entry<String, Integer> entry : entrySet) { System.out.println(entry.getKey() + ":" + entry.getValue()); } // 自定义泛型 String[] a = { "aa", "bb", "cc" }; swap(a, 1, 2); Integer[] b = { 32, 45, 67 }; swap(b, 1, 2); // 泛型中的类型不能为基本数据类型(如下就不行) int[] c = { 1, 3, 5 }; // swap(c,1,2); Vector<Date> v1 = new Vector<Date>(); // 由于泛型是由编译器实现的语法检查,编译成class文件后没有保留泛型信息,但可以根据Method获取 Method applyMethod = GenericStudy.class.getMethod("applyVector", Vector.class); // getGenericParameterTypes()按照声明顺序返回 Type 对象的数组,这些对象描述了此 Method // 对象所表示的方法的形参类型的。 Type[] type = applyMethod.getGenericParameterTypes(); // ParameterizedType extends Type ParameterizedType pType = (ParameterizedType) type[0];// applyVector只用一个参数 // getRawType()返回 Type 对象,表示声明此类型的类或接口 System.out .println("getRawType()方法:表示声明此类型的类或接口是:" + pType.getRawType()); // getActualTypeArguments()返回表示此类型实际类型参数的 Type 对象的数组。 System.out.println("getActualTypeArguments()方法:实际类型参数的 Type 对象" + pType.getActualTypeArguments()[0]);// Vector<Date>只用一个Date类型 } public static void applyVector(Vector<Date> v1) { } public static void printCollection(Collection<?> collection) { for (Object obj : collection) { System.out.println(obj); } } /** * 自定义泛型一个泛型方法 * * @param <T> * 表示自己定义的一个泛型类型(T不能是基本数据类型) * @param a * T类型的数组 * @param m * T类型的数组m位置 * @param n * T类型的数组n位置 */ public static <T> void swap(T[] a, int m, int n) { T temp = a[n]; a[n] = a[m]; a[m] = temp; } /** * 将某个类型的数组元素copy到这个类型集合 * * @param <T> * 表示自己定义的一个泛型类型(T不能是基本数据类型) * @param a * 集合 * @param b * 数组 */ public <T> void copyArray2Collection(Collection<T> a, T[] b) { } }
/** * 泛型DAO接口 * * @author 张明学 * */ public interface GenericDAO<E> { /** * 持久化一个对象 * * @param entity * 实体对象 */ public void save(E entity); /** * 根据主键查询一个实体对象 * * @param id * 主键 * @return */ public E queryByPk(Integer id); /** * 删除一个实体对象 * * @param entity */ public void delete(E entity); /** * 删除一个实体对象 * * @param id * 主键 */ public void delete(Integer id); /** * 修改一个实体对象 * * @param entity */ public void update(E entity); /** * 查询一个实体对象集合 * * @return */ public List<E> queryList(); }
评论
1 楼
mercyblitz
2010-05-31
引用
# // 1.1 获取c1与c2的字节码看是否相同
# System.out.println("c1与c2的字节码是否相同:" + (c1.getClass() == c2.getClass()));// true
# System.out.println("c1与c2的字节码是否相同:" + (c1.getClass() == c2.getClass()));// true
在运行时擦鞋,模板参数类型不会保存在运行时。
引用
# // 泛型中的?通配符:表示任何类型,它与Object是有区别的如下所示:
# // collection1可以存放任保类型,而collection2则只能放在Object类型
# Collection<?> collection1 = new ArrayList<String>();
# collection1 = new ArrayList<Integer>();
# collection1 = new ArrayList<Object>();
# Collection<Object> collection2 = new ArrayList<Object>();
java.lang.String is not java.lang.Object?不能放String吗?你确定?
引用
# // 自定义泛型
# String[] a = { "aa", "bb", "cc" };
# swap(a, 1, 2);
# Integer[] b = { 32, 45, 67 };
# swap(b, 1, 2);
# // 泛型中的类型不能为基本数据类型(如下就不行)
# int[] c = { 1, 3, 5 };
# // swap(c,1,2);
泛型的限制,不能申明为数组。
public static void swap(Object[] src,int a,int b){ ... }
这么申明就可以了,和泛型关系不大。
发表评论
-
HttpURLConnection附件上传
2015-05-15 18:25 3331整合了一个自己写的采用Http做附件上传的工具,分享一下! ... -
java自带线程池和队列详细讲解
2014-11-29 16:39 8443Java线程池使用说明 一简介 线程的使用在java中占 ... -
使用CGLIB的代理技术
2010-06-09 19:04 1473import java.lang.reflect.Method ... -
使用反射和注解模拟Spring的依赖注入
2010-06-09 19:00 4448作为一个应用Java的反射和注解的一个使用。 首简写一个XM ... -
Java基础十:JDK 动态代理类分析(java.lang.reflect.Proxy使用)
2010-05-28 19:25 4085/** * JDK 动态代理类分析(java.lang.r ... -
Java基础九:Java中的类加载器说明,可以对class文件加密,自定义ClassLoader
2010-05-28 19:22 3665/** * Java 类加载器 * * @aut ... -
Java基础七:注解Annotation使用说明
2010-05-28 19:14 3959import java.lang.annotation.Ele ... -
Java基础六:apache的Beanutils简单使用对JavaBean操作的封装
2010-05-28 19:08 2111/** * apache的Beanutils简单使用 ... -
Java基础五:内省(对JavaBean的操作)
2010-05-28 19:05 2294/** * Person JavaBean * ... -
Java基础四: 反射(构造方法,成员变量,普通方法,数组)
2010-05-28 18:58 5713/** * 反射(构造方法,成员变量,普通方法,数组) ... -
Java基础三: 枚举高级应用(向枚举值对象中添加变量和方法)
2010-05-28 18:45 3781/** * JDK1.5 枚举高级应用(向枚举值对象中添加 ... -
Java基础二: hashCode的作用简要说明,可能导致对象在集合中无法删除
2010-05-28 18:30 1571import java.util.ArrayList; im ... -
Java基础一: 自动装箱,折箱、静态导入、可变参数
2010-05-28 18:24 1563自动装,折箱 /** * JDK1.5 自动装箱,折箱 ... -
apache StringUtils常见用法说明
2009-10-28 17:24 43651.空字符串检查使用函数: StringUtils.isBla ... -
产生随机字符串(a-z A-Z 0-9)
2009-09-25 17:47 3038实现方法一: public class RandomFile ... -
计算离当前日期之前或之后任意天的日期
2009-06-18 13:33 1452/** * 日期计算 * * @author z ... -
计算Java日期Date,DateFormat,GregorianCalendar的使用
2009-06-16 17:09 17904概要 不管你是处理财务交易还是计划着下一步的行动,你都要知 ... -
Java计算日期今天,昨天,上周,上月
2009-06-16 16:53 8367功能:今天,昨天,本周,上周,本月,上月 范围:以周一作为一 ... -
@SuppressWarnings(unchecked)作用解释.doc
2009-05-13 09:17 34558解释一: 屏蔽某些编译时的警告信息 ... -
JDK实现AOP动态代码
2009-04-20 14:29 62代理类: import java.lang.refle ...
相关推荐
该文档主要包括为什么使用泛型、在集合中使用泛型、自定义泛型结构、泛型在集成上的体现以及通配符的使用等内容
java基础-泛型通配符
* 一个参数通配符的实例 * 说明:对一个包含了数值元素的集合进行汇总运算。在这种情况下,用户并不关心 * 集合中的每一个对象是什么类型,只要它是数值型即可,而且,用户也希望集合中可以 * 存放不同类型的数值...
了解泛型,能够说出泛型的作用和优点 掌握泛型类,能够独立定义和使用泛型类 掌握泛型接口,能够独立定义和使用泛型接口 掌握泛型方法,能够独立定义并使用...01泛型基础 02泛型类 03泛型接口 04泛型方法 05类型通配符
学习和理解Java泛型的基本概念和语法; 实际项目中需要使用泛型来增加类型安全性和重用性的开发任务。 目标: 本代码资源的目标是帮助读者理解泛型的用法和优势,并通过实际的示例代码加深对泛型的掌握。读者可以...
Java泛型概念 Java泛型是一种在编译时进行类型检查和类型推断的机制,它可以让我们编写更加通用、可重用的代码,提高了代码的可读性和可维护性,同时保证了类型安全。 Java泛型的核心思想是类型参数化,即在类、接口...
NULL 博文链接:https://mydownload.iteye.com/blog/1330570
2.4 泛型通配符: 三 限定类型变量 四 泛型中的约束和局限性 4.1 不能用基本类型实例化类型参数 4.2 运行时类型查询只适用于原始类型 4.3 泛型类的静态上下文中类型变量失效 4.4 不能创建参数化类型的数组 4.5 不能...
主要介绍了java泛型常用通配符实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
讲述泛型及泛型的子类型、通配符
泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。将类型参数化以达到代码...
下面小编就为大家带来一篇详谈Java泛型中T和问号(通配符)的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
通配符:可以使用通配符来限制类型参数的范围。例如,List<? extends Number>表示一个可能是Number或其子类类型的列表。 类型推断:在Java 7及以上版本中,可以使用varargs和钻石操作符来推断类型参数。例如,List[]...
java泛型例子 内涵泛型类,泛型接口,泛型方法,泛型通配符使用,泛型上界下界,泛型数组,嵌套泛型等,很详细。放入myeclipse可用,已测试。
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...
Java泛型是一种强大的特性,它使得我们可以编写更加通用、类型安全的代码。通过使用泛型类、泛型方法以及通配符,我们可以处理多种数据类型而无需重复编写代码,并且在编译时进行类型检查,避免了运行时的类型错误。...
这是小编自己学习的心得,想通过这个平台对大家共享,希望大家前来评价一下,我及时改正,通配符这个是在泛型中使用的一个可以帮助大家更加方便简洁的去利用代码,它是其他泛型的一个总父类!
Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符? 常用的通配符有哪些? 你的项目中哪里用到了泛型? 反射 何为反射? 反射机制优缺点 反射的应用场景 注解 异常 Exception 和 Error 有什么区别? Checked ...
主要介绍了Java中泛型通配符的使用方法,结合实例形式分析了java中泛型通配符的功能、语法及在泛型类创建泛型对象中的使用方法,需要的朋友可以参考下
泛型&通配符详解 Java 反射机制详解 Java 代理模式详解 BigDecimal 详解 Java 魔法类 Unsafe 详解 Java SPI 机制详解 Java 语法糖详解 集合 知识点/面试题总结 : Java 集合常见知识点&面试题总结(上) (必看 ) Java...