1,dynamic cast
类似C++的dynamic_cast<T*>操作符,C#的as操作符,Java 5.0提供了安全的dynamic cast功能,不同的是它以类库的形式提供的:
Class.cast public T cast(Object obj)
- Casts an object to the class or interface represented by this Class object.
-
- Parameters:
obj - the object to be cast
- Returns:
- the object after casting, or null if obj is null
- Throws:
ClassCastException - if the object is not null and is not assignable to the type T.
- Since:
- 1.5
2,返回值协变
interface SomeInterface{ Object get(); }
class CovariantImpl implements SomeInterface{ public String get(){ return "covariant"; } }
public class TestUntitled2 extends TestCase { public void testCovariant() { SomeInterface obj = new CovariantImpl(); Assert.assertEquals("covariant", obj.get()); } }
3,类型安全的代理
类似只读代理Collections.unmodifiableXXX, 同步代理Collections.synchronizedXXX, Java 5.0提供了类型安全的代理:Collections.checkedXXX
4,Arrays.deepEquals()
5,毫无必要的static import
并且对同一个包内的static method不管用
package si;
class CovariantImpl public static void faint(){ } }
package si;
class SomeClass{ public void test(){ faint(); // compiler faints } }
(to be continue...) 
|