SpringSide中使用的JDK5.0特性
1.AutoBoxing
本来int的非Object性就很无聊,在JDK5.0终于提供了autoboxing功能。这个语法简化糖,被用在了每一个地方。
2. 范型
用于HibernateEntityDao
, 泛型配合反射API获得要管理的Entity的Class,T.class。
子类只需以下定义:
BookManager extends BaseHibernateDao<Book>
一来无须再实现getEntityClass()函数,二来所有返回T的函数如T find(int id);在子类使用时也无须再作强行类型转换。
3.可变参数
用于HibernateGenericDao
中,简化函数接口。
比如 public List find(String hql, Object... values),就支持了如下四种调用,避免了以前的大量重复定义。
4. 三种内置Annotation
JDK5.0 有SuppressWarnings,Deprecated和Override 三种内置的annotation:
@Override
此标签一方面提醒用户这是个重载函数,另一方面保证了父类函数的参数或者名字改变时,子类如果没有跟着变化,就会编译不过。
虽然有点占地方,但用处的确很大,不会哪天子类被人卖了都不知道。
所以我设置了让IDEA6检查所有重载函数必须加上@Override标识。
@SuppressWarnings("unchecked")
此标签可以让编译器忽略某种warning信息,比如减少JDK5.0的集合操作引入范型后无处不在的warning。
因为有些非JDK5.0的开源库如hibernate, 函数返回的一定是List,而不会是List<User>,这时候IDE就会爆出很多warning。用SuppressWarning("unchecked")可以取消掉它。
@Deprecated
此标签以前写在JavaDoc里,现在提为annotation,注释已废弃的函数。用户使用该函数的话,编译时会得到"你用了废柴"的提示。