J2SE1.5Tiger新特性学习

一、定义一个简单的“泛型”类

package tigers;public class GenericIdentify {public static void main(String[] args) {Generic1 gStr = new Generic1();gStr.set("aaaaaaaaaaaaaaaaa");Generic1 gInt = new Generic1();gInt.set(new Integer(1321423));Generic1 gBool = new Generic1();gBool.set(new Boolean(true));System.out.println(gStr.get() + "/n" + gInt.get() + "/n" +gBool.get() + "/n");((Generic1)gInt).set("bbbbbbbbbbbbb"); //避开类型检查System.out.println(gInt.get());}}class Generic1 { //声明泛型private A a;public void set(A a) {this.a = a; } public A get() {return this.a; }}

C:/tiger>javac -d c:/tiger/cls/ c:/tiger/src/*.java

Note: c:/tiger/src/GenericIdentify.java uses unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.

C:/tiger>java -classpath c:/tiger/cls tigers.GenericIdentify

aaaaaaaaaaaaaaaaa

1321423

true

bbbbbbbbbbbbb

C:/tiger>

二、关于格式化输出的简单例子

package tigers;import java.util.Formatter;public class FormatPrint2 {   public static void main(String[] args) {     StringBuilder sb = new StringBuilder();     Formatter forma = new Formatter(sb);     forma.format("%12.10f", Math.PI);     System.out.println(forma);     System.out.printf("%12.10f", Math.PI);   }}

结果:

C:/tiger>javac -d c:/tiger/cls c:/tiger/src/FormatPrint2.java

C:/tiger>java -classpath c:/tiger/cls tigers.FormatPrint2

3.1415926536

3.1415926536

三、可变长度参数与格式化输出

package tigers;public class FormatPrint {   public static void main(String[] args) {     printf("%, %, % and % are my friends!", "BITAN", "HELEN", "KATHY", "SUSAN");     printf("%, %, %, % and % are my favorites" ,"A", "B", "C", "D");   }   public static void printf(String msg, String... strs) {     int i = 0;     char[] chars = msg.toCharArray();     for ( char c : chars) {       System.out.print(c == '%' ? strs[i++] : c);     }     System.out.println();   }}

C:/tiger>javac -d c:/tiger/cls/ c:/tiger/src/*.java

C:/tiger>java -classpath c:/tiger/cls tigers.FormatPrint

BITAN, HELEN, KATHY and SUSAN are my friends!

A, B, C, D and Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 4

at tigers.FormatPrint.printf(FormatPrint.java:12)

at tigers.FormatPrint.main(FormatPrint.java:6)

四、使用‘泛型’与‘增强for循环’的简单例子

genericTest.javapackage tigers;import java.util.*;public class genericTest {   public static void main(String[] args) {     List lists = new ArrayList();     lists.add("aaaaaaaaaaaa");     lists.add("bbbbbbbbbbbbb");     lists.add("cccccccccccccc");     lists.add("ddddddddddddd");     lists.add("eeeeeeeeeeeeeeeee");     for (String s :lists) {       System.out.println(s);     }   }}

结果:

C:/forms>javac -d c:/forms/web-inf/classesc:/forms/src/genericTest.java

C:/forms>java -classpath c:/forms/web-inf/classes tigers.genericTest

aaaaaaaaaaaa

bbbbbbbbbbbbb

cccccccccccccc

ddddddddddddd

eeeeeeeeeeeeeeeee

C:/forms>

五、使用‘枚举’类型

package tigers;import java.util.EnumMap;enum Simple1 {   A,B,C,D;}public class SimpleEnum {   public static void main(String[] args) {     System.out.println(Simple1.A);     for (Simple1 s : Simple1.values()) {       System.out.print(s);     }     System.out.println();     Simple1 s2 = Simple1.D;     switch(s2) {       case A:         System.out.print("A");         break;       case B:         System.out.print("B");         break;       case C:         System.out.print("C");         break;       default:         System.out.print(s2);     }     System.out.println();     EnumMap aMap = new EnumMap(Simple1.class);     String str = "something";     int i = 0;     for (Simple1 s3 : Simple1.values()) {       aMap.put(s3, str += (i++ + " "));     }     System.out.println(aMap);     for (Simple1 s4 : Simple1.values()) {       System.out.println(s4 + " = " + aMap.get(s4));     }   }}

结果:

C:/tiger>javac -d c:/tiger/cls c:/tiger/src/SimpleEnum.java

C:/tiger>java -classpath c:/tiger/cls tigers.SimpleEnum

A

ABCD

D

{A=something0 , B=something0 1 , C=something0 1 2 , D=something0 1 2 3 }

A = something0

B = something0 1

C = something0 1 2

D = something0 1 2 3

六、在类定义上使用泛型和继承

package tigers;import java.io.UnsupportedEncodingException;public class GenericExtends {   public static void main(String[] args) {     try {       ActionToucher.execute(         new Action() {           public void method() throws NoSuchMethodException {             System.out.println("Action");           }         }       );       ActionToucher.execute(         new Action() {           public void method() throws NoSuchFieldException {             System.out.println("Action");           }         }       );       ActionToucher.execute(         new Action() {           public void method() throws UnsupportedEncodingException {             System.out.println("Action");           }         }       );     } catch (NoSuchMethodException e) {       e.printStackTrace();     } catch (NoSuchFieldException e) {       e.printStackTrace();     } catch (UnsupportedEncodingException e) {       e.printStackTrace();     }   }}interface Action {   void method() throws E;}class ActionToucher {   public static void execute(Action action) throws E {     action.method();   }}

C:/tiger>javac -d c:/tiger/cls/ c:/tiger/src/*.java

Note: c:/tiger/src/GenericIdentify.java uses unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.

C:/tiger>java -classpath c:/tiger/cls tigers.GenericExtends

Action

Action

Action

真正的强者,不是流泪的人,而是含泪奔跑的人。

J2SE1.5Tiger新特性学习

相关文章:

你感兴趣的文章:

标签云: