易截截图软件、单文件、免安装、纯绿色、仅160KB

Java高级特性 2

6.泛型:
1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
  2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。
  3、泛型的类型参数可以有多个。
  4、泛型的参数类型可以使用extends语句,例如<T extends superclass>。习惯上成为“有界类型”。
  5、泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName(java.lang.String);
例子:
 a..使用?通配符可以引用其他各种参数化的类型,但不能调用与参数化有关的方法;
  Collection<?> c = new Vector<String>();
  c.add("abc");//报错
  c.size();//正确
         所以,?通配符定义的变量主要用作引用,调用与参数化无关的方法,如果要调用与参数化相关的方法,那么必须在使用?通配符引用之前调用,否则就与java 5提供泛型的目的背道而驰了。
b..向下限定通配符:
  正确:Vector<? extends Number> x = new Vector<Integer>();
  错误:Vector<? extends Number> x = new Vector<String>();
    向上限定通配符:
  正确:Vector<? super Integer> x = new Vector<Number>();
  错误:Vector<? super Integer> x = new Vector<Byte>();
jdk中原有的集合类中存在一些问题,java5以后希望你在定义集合时,明确表示你要向集合中装哪种类型的数据。为了和以前版本的兼容性,无法加入指定类型以外的数据,编译器会去除掉“类型”信息,使运行效率不受影响。在新语法情况,还可以把各种不同类型的数据装到一个集合中,可以按原始的方式去做。ArrayList<E>中的E是类型变量,参数化的类型(整个ArrayList<Integer>,即进行了参数化的类型),原始类型(也就是ArrayList),类型参数(ArrayList<Integer>中的Integer),以上几个术语应该牢记。参数化类型引用一个原始类型的对象,可以,但是报告警告。原始类型引用一个参数化类型的对象,可以,也会报告警告。有时候定义一个方法,打印一个集合中的数据,集合的类型变量该使用?通配符进行参数化。切忌不可以使用Object,如果使用了Object,则这个类型只能匹配Object类型的变量。例如:Vec


相关文档:

IBM FileNet Content Java API 简介

2008 年 6 月 24 日
原文地址: http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0806wangys/
本文介绍 IBM FileNet P8 4.0 Platform 提供的 Content Java API。首先对 FileNet P8 Content Engine 和 API 进行概要介绍, 并说明了一些基本概念,随后详细介绍了 FileNet Content Engine提供的基于 EJB ......

Java序列化简明概要

1. 概念: 序列化就是把对象变成对象流(确切说是把对象的属性写入流),如果需要进而可以把对象流存成二进制文件;
2. 目的: 序列化的目的是为了方便永久存储或者网络传输;
3. 如何实现: 将类实现Serializable接口即可,无必须实现的方法,实现该接口只是为了标识该类可被序列化;
4. (转)其他需要知道的:
  ......

Java 多线程同步问题的探究(一、线程的先来后到)

众所周知,在Java多线程编程中,一个非常重要的方面就是线程的同步问题。
关于线程的同步,一般有以下解决方法:
1. 在需要同步的方法的方法签名中加入synchronized关键字。
转载注明出处:http://x- spirit.javaeye.com/、http: //www.blogjava.net/zhangwei217245/
2. 使用synchronized块对需要进行同步的代码段进行 ......

发现Java虚拟机内存泄露问题

【IT168 文档
】内存
泄露问题对于程序来说,是一个很难发现,并且容易引起严重灾害的事情。
Java一直以其垃圾回收机制为自豪,那是否这种机制就是完美的呢。
  常规理解上,Java的内存
管理机制是将局部变量保存在堆中,当变量的作用域结束之后,该变量所占用的
内容会被自动回收。不需要做任何特殊的处理。比如下 ......

socket通信java或c#中文乱码问题

C#中显示中文:

发送数据:  
  string   sReturnData   =   "你好";  
  Byte[]  
bReturnData   =   Encoding.ASCII.GetBytes(sReturnData.ToCharArray());  
 
m_sktSession.Send(bReturnData); 
【将出现乱码】
】  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号