Java 为什么下面的代码段没有给出编译时错误?
声明静态最终实例varibale后,将为其指定一个ArrayList对象。但是,当我添加一个额外的分号时,使用java编译器就可以了。这是代码Java 为什么下面的代码段没有给出编译时错误?,java,static,final,Java,Static,Final,声明静态最终实例varibale后,将为其指定一个ArrayList对象。但是,当我添加一个额外的分号时,使用java编译器就可以了。这是代码 import java.util.ArrayList; import java.util.List; public class FinalExample { private static final List<String> foo = new ArrayList();; //double semicolons are fine
import java.util.ArrayList;
import java.util.List;
public class FinalExample {
private static final List<String> foo = new ArrayList();; //double semicolons are fine with compiler
public static void main(String[] args){
System.out.println(FinalExample.foo);//Result is - []
}
import java.util.ArrayList;
导入java.util.List;
公共类最终示例{
private static final List foo=new ArrayList();//编译器可以使用双分号
公共静态void main(字符串[]args){
System.out.println(FinalExample.foo);//结果是-[]
}
分号结束一条语句。因此,当您在java中给出多个分号时,编译器认为第二个分号是一条空语句,并且不会对此进行抱怨。您是否希望该空语句会导致前面的赋值失败?我搜索了一些细节。但事实上,我只能找到关于,nothi的部分ng关于空声明。但请确保,这将是相同的行为。问题中的双分号不在语句的结尾。它在类成员声明的结尾。事实上,语句在这里是非法的。声明不是语句吗?不是在这个位置,不是。