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...)