20060405 星期三 四月 05, 2006

5.0之new feature初体验(2005年10月) 说不是泛型,其实也是泛型——是那个所谓的auto-boxing/auto-unboxing(自动打包/自动解包),太tmd好用了。以前像随便输出个调试信息,譬如封装一下System.out.println(...)之类的都要区分基本类型还是对象实例,简直太愚昧了!

下面是以前写的傻乎乎的代码:
public Object getNextItem()
{
// current,first,last皆为Integer而非int
if (current.intValue() + 1 <= last.intValue())
return Integer.valueOf(current.intValue() + 1);
else
{// Reach tail
if (rollback)
return first;
else
return current;
}
}

再下面是用了auto-boxing/auto-unboxing特性的代码
public Object getNextItem()
{
if (current + 1 <= last)
return current + 1;
else
{// Reach tail
if (rollback)
return first;
else
return current;
}
}

看到了吧,只要是目标对象符合,操作上跟基本类型完全一样。这个功能在某种程度上部分抵销了Java没有运算符重载带来的不便。不过编译时要记得打开5.0的VM选项哦:
javac -target 5.0 XXX.java
结论:Generic果然是王道!
Posted by Samuel Lee in J2SE研究 at 20060405

Comments:

Post a Comment:
Comments are closed for this entry.