标签:https initial 变量 script htm ... title his ada
前两天看到jdk10试用版都出来了,才发现自己连1.8都没用过,对不同版本的jdk的新特性也不是太了解,所以想还是百度一下看看人家怎么说然后自己记录总结一下,其中jdk1.8的新特性可以到edu.51cto.com上学习一下,好了,现在说说jdk1.5的常用新特性吧。
(9个)
泛型,
foreach循环,
自动拆装箱,
类型安全的枚举,
可变参数,
内省(https://www.cnblogs.com/H_Razor/archive/2011/02/28/1967178.html),
静态导入,
线程池,
元数据(http://www.importnew.com/14227.html)
1 Collection<String> c = new ArrayList<String>(); 2 c.add(new Date()); 3 //编译器会给出一个错误: 4 add(java.lang.String) in java.util.Collection<java.lang.String> cannot be applied to (java.util.Date)
1 void processAll(Collection c) { 2 for(Iterator i = c.iterator();i.hasNext();) { 3 MyClass myObject = (MyClass) i.next(); 4 myObject.process(); 5 } 6 } 7 //使用foreach循环,我们可以把代码改写成: 8 void processAll(Colllection<MyClass> c) { 9 for(MyClass myObject : c) { 10 myObject.process(); 11 } 12 } 13 //这段代码要比上面清晰许多,并且避免了强制类型转换。
1 int a = 3; 2 COllection<Integer> c = new ArrayList<Integer>(); 3 c.add(a);//自动转换为Integer 4 5 Integer b = new Integer(2); 6 c.add(b+2);//这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer
1 public enum Color { 2 RED,WHITE,BLUE 3 } 4 public enum Coin { 5 6 penny(1), nickel(5), dime(10), quarter(25); 7 8 Coin(int value) { 9 this.value = value; 10 } 11 12 private final int value; 13 14 public int value() { 15 return value; 16 } 17 } 18 //然后可以这样来使用: 19 Color myColor = Color.RED; 20 //枚举类型还提供了两个有用的静态方法values()和valueOf().我们可以很方便地使用它们,例如: 21 for(Color c : Color.values()) { 22 System.out.printl(c); 23 }
1 util.write(obj1); 2 util.write(obj1,obj2); 3 util.write(obj1,obj2,obj3); 4 ...
1 public void write(Object... objs) { 2 for(Object obj : pbjs) { 3 System.out.println(obj); 4 } 5 }
1 c.getMethod("test", new Object[0]).invoke(c.newInstance(), new Object[0]); 2 //现在我们可以这样写了 3 c.getMethod("test").invoke(c.newInstance()); 4 //这样代码比原来清楚了很多
1 import static java.lang.Math.*; 2 ... 3 r = sin(PI * 2);//无需再写 r = Math.sin(Math.PI * 2); 4 不过,过度使用这个特性也会一定程度上降低代码的可读性。
1 Collection<String> c = new ArrayList<String>(); 2 c.add(new Date()); 3 //编译器会给出一个错误: 4 add(java.lang.String) in java.util.Collection<java.lang.String> cannot be applied to (java.util.Date)
1 void processAll(Collection c) { 2 for(Iterator i = c.iterator();i.hasNext();) { 3 MyClass myObject = (MyClass) i.next(); 4 myObject.process(); 5 } 6 } 7 //使用foreach循环,我们可以把代码改写成: 8 void processAll(Colllection<MyClass> c) { 9 for(MyClass myObject : c) { 10 myObject.process(); 11 } 12 } 13 //这段代码要比上面清晰许多,并且避免了强制类型转换。
1 int a = 3; 2 COllection<Integer> c = new ArrayList<Integer>(); 3 c.add(a);//自动转换为Integer 4 5 Integer b = new Integer(2); 6 c.add(b+2);//这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer
1 public enum Color { 2 RED,WHITE,BLUE 3 } 4 public enum Coin { 5 6 penny(1), nickel(5), dime(10), quarter(25); 7 8 Coin(int value) { 9 this.value = value; 10 } 11 12 private final int value; 13 14 public int value() { 15 return value; 16 } 17 } 18 //然后可以这样来使用: 19 Color myColor = Color.RED; 20 //枚举类型还提供了两个有用的静态方法values()和valueOf().我们可以很方便地使用它们,例如: 21 for(Color c : Color.values()) { 22 System.out.printl(c); 23 }
1 util.write(obj1); 2 util.write(obj1,obj2); 3 util.write(obj1,obj2,obj3); 4 ...
1 public void write(Object... objs) { 2 for(Object obj : pbjs) { 3 System.out.println(obj); 4 } 5 }
1 c.getMethod("test", new Object[0]).invoke(c.newInstance(), new Object[0]); 2 //现在我们可以这样写了 3 c.getMethod("test").invoke(c.newInstance()); 4 //这样代码比原来清楚了很多
1 import static java.lang.Math.*; 2 ... 3 r = sin(PI * 2);//无需再写 r = Math.sin(Math.PI * 2); 4 不过,过度使用这个特性也会一定程度上降低代码的可读性。
标签:https initial 变量 script htm ... title his ada
原文地址:http://www.cnblogs.com/liunianfeiyu/p/7868779.html