一、定义一个简单的“泛型”类
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
真正的强者,不是流泪的人,而是含泪奔跑的人。