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

Java中的泛型

    1、Java.util的集合类中的元素必须是对象化的,他们不能是基本类型。如不能声明Set<char>或List<int>。但对List<Integer>,可以往里面加int型数据,它会用Java的autoboxing机制自动转换成Integer对象。
    2、参数化类中的类型参数可以是数组类型,如Map<String[],int[]),注意int[]型是一个对象,而不是原始类型。
 
    3、如果不想用泛型功能,可以通过带-source1.4标记来编译;也可以在声明的域或方法前用@SuppressWarings("unchecked")标注来忽略。
    4、一个List<Integer>是一个Collection<Integer>,但不是一个List<Object>,否则List<Integer>可以转换成List<Object>,那么转换后什么类型的数据都可以加进去,没有达到编译期类型安全的目的。即:类可以上转型,类型参数不能上转型。
    5、Java中引入泛型的本质:为了提供编译期的类型安全检查,以免类型不安全的bug出现在运行期。(注意这与C++及C#中泛型的目的不同)
    6、一个List<T>上转型成List是合法的,这是为了向后兼容,但不推荐这样做。因为上转型后可以添加任意类型的元素,会在后面引入bug。
   注意:上转型是编译期行为,在运行时运行的还是未转型前的那个类型
    7、不能创建参数化类型的数组。如List<String>[] wordlists=new ArrayList<String>[10];编译通不过。编译器为什么要这样做呢?如下:
List<String>[] wordlists=new ArrayList<String>[10]; //若可以创建数组,继续往下执行
ArrayList<Integer> ali=new ArrayList<Integer>();
ali.add(123); //autoboxing
Object[] objs=wordlists; //是上转型,编译通过。编译时objs各元素是Object类型,
//运行时objs各元素是ArrayList<String>类型
objs[0]=ali; //是上转型,编译通过。编译时objs[0]是Object类型,
//运行时是ArrayList<Integer>类型,与上面的ArrayList<String>矛盾,但运行
//时仍无错,因为对String还是Integer的检查在编译期完成,运行期并不知道
String s=wordlists[0].get(0); //运行时wordlists[0](==objs[0])是


相关文档:

java中的贪食蛇例程

最近要重新学习Java,找个例子来实践,在网上找了很多例程来看,自己重新编写了一个贪食蛇的例子,记在这里。
1.SnakeModel.java
import java.util.Observable;
import java.util.LinkedList;
import java.util.Arrays;
import java.util.Random;
import javax.swing.*;
//Observable类一般代表数据,实现接口Runna ......

java中的string类型全面解析

1. 首先String不属于8种基本数据类型,String是一个对象。
  因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。
  2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;
  3. String str=”kvill”;
......

AES算法java实现浅析

      java jce对aes算法有很好的支持,但是默认安装的JDK或者JRE是不能支持aes192bit密钥和aes256bit密钥两种算法的,需要到sun官方下载Java(TM) Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files,以下是jce unilimited strength jurisdiction policy files 6的官方 ......

Java设计模式之State(状态模式)

定义:
GOF《设计模式》中给状态模式下的定义为:允许一个对象在其内部状态改变时改变它的行为。
先看一个例子:
package com.state;
public class KissingPrincess {
// 标志位,标志是青蛙还是王子。
private boolean isFrog = true;
// 根据isFrog进行不同的操作。
public void greet() {
if (isFrog)
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号