黑马程序员技术交流社区
标题:
匿名内部类
[打印本页]
作者:
黑马_许芸
时间:
2012-8-20 09:16
标题:
匿名内部类
今天发现一个好玩的现象。先帖代码
String[] names = file.list(new FilenameFilter()
{
public boolean accept(File dir, String name)
{
if(name.endsWith(".java"))
{
return true;
}
return false;
}
;
});
在这个匿名内部类中,那个被我标成红色的分号,不管加不加这个分号,程序都是正确的。执行结果也一样。这是什么原因?
作者:
李知伦
时间:
2012-8-20 09:38
String[] names = file.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
if(name.endsWith(".java")) {
return true;
}
return false;
}//这个位置的分号,前面对应的是accept方法的{},最好不加
});
}
复制代码
java中你可以在任何一个一个后面没东西的{或}后面加;
public class test {;
public test() {//只有这里不能加,因为下面的语句变成第二行,而super()要求在构造器的第一行
super();
};
public test(int i) {;
System.out.println(i);
};
public static void main(String[] args) {;
// TODO Auto-generated constructor stub
System.out.println(1);
new test(5);
};
};
复制代码
作者:
高薇
时间:
2012-8-20 11:01
姐姐,这个问题直接可以忽略不计的{:soso_e127:}
语句后面加个;不会影响全局的。
作者:
广驰
时间:
2012-8-20 11:29
java中{}和;都可以作为语句的结束标志,一个分号就相当于一条语句,如果分号前面没有具体代码,就相当于空语句,也是可以的,而除了在一些特殊的地方,比如构造函数的super()前面,甚至可以放好几个;
作者:
黑马_许芸
时间:
2012-8-20 15:14
明白了{:soso_e106:}。谢谢大家,问题已解决。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2