日期:2014-05-20  浏览次数:20741 次

三元操作符
下面是一段代码
String date=new String();
int a=0,b=0;
date=b+":"+(a==0?"00":a);
//System.out.print("date="+date);

在Ecilpse3.1.2和MyEcilpse 4.0中,把这段代码放入jsp中,会有语法错误
放入普通的class中,
当Ecilpse jdk选1.4是报错,跟jsp中一样,jdk选5.0没错,why?难道是jdk5.0的新特性,好像5.0没有介绍这个新特性啊?
 

------解决方案--------------------
date=b+":"+(a==0?"00":""+a);//把后面的int类型a改成""+a,变成字符串类型
三目运算要求返回类型一至,(a==0?"00":a)前面返回字符串"00",后面返回int类型a,这是不允许的。jdk选5.0加入了泛型,编译器会自动转换。