易截截图软件、单文件、免安装、纯绿色、仅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 定时备份posgreSQL数据库

首先我们要先写一个备份类
BackupDb.java
代码如下:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class BackupDb {
public BackupDb() {
}
public String back ......

java的volatile是什么意思


我们知道,在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。
这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的使用变得非常重要。
在当前 ......

java 集合

< type="text/javascript"> document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text"); if (text && text.length>300) { text = text + "\r\n\n本文来自CSDN博客,转载请标明出处:" + location.href; clipboardData.setData( ......

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号