java如何更新代码_如何用Java5更新原有代码

它使用一个String数组提交数量可变的自变量给过程调用,但又希望调用方已建立了那个数组。Vararg支持让我们指定一个在自变量表中从未出现或出现多次的参数,并将它们变成一个数组,从而避免了这一需要。我们只需去掉过程声明中的“[]”符号,并用“…”代替它即可。

private void process(String cmd,String... args) {

方法的其它部分不变。然后,调用过程会变得简单得多。

process("print","These","are","arguments");

它的巧妙之处在于,当你需要用Java 5自动管理它时,你仍然可以使用基于数组的调用类型;于是你可以更新方法声明,而不必修改调用代码。

在对一段代码进行重新开发时,我喜欢确信我没有对代码当前的运行方式做出假设。Java的静态类型非常适于这一点;但是如果我们处理集合,上述优点却不复存在。以下面这段代码为例:

ArrayList list=new ArrayList();

list.add(new Integer(1000));

list.add(new Integer(200));

Iterator i=list.iterator();

while(i.hasNext()) {

Integer ni=(Integer)i.next();

System.out.println(ni);

}

这些都是合法的Java代码,在运行时间也能正常执行,只是在列表中增加了Integer(整数)实例。如果建立和处理操作依次发生,就可以容易的发现问题,但还是没有静态编译时间检查。JavaSE 5在Java语言中增加了“Generics”特性来解决这个问题。

如果你编译这段代码,首先你会看到一个警告:

Note: Example.java uses unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.

在编译器标记中增加-Xlint:unchecked,你会发现它在列表中增加了一个Integer类。

Example.java:41: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.ArrayList

list.add(new Integer(1000));

Example.java:42: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.ArrayList

list.add(new Integer(200));

这是因为ArrayList不知道自己会包含哪种类型的类,所以标记称之为“未经检查”(unchecked)。要解决这个问题,我们需要进入  ArrayList声明,清楚说明ArrayList包含什么类:

ArrayList list=new ArrayList();

来源:考试大-Java认证

责编:drfcy  评论 纠错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值