语法错误:带有多个分号的Import语句
这可能是一个奇怪的问题,但却是一个有效的问题。 我知道下面的语句没有编译错误:
ArrayList list = new ArrayList();;; //(with three `;` semi-colon)
好的,现在我写了下面的import语句:
import java.util.ArrayList;;; (with three `;` semi-colon)
但是我得到了以下编译错误:
Syntax error on token ";", invalid StaticImportOnDemandDeclarationName
为什么?
你有什么:
ArrayList list = new ArrayList();;; //(with three `;` semi-colon)
不是以三个分号结束的声明。 这是一个由一个分号结束的声明,后面是两个空的声明 。
空语句在Java中是合法的,但Java源文件的导入部分不包含语句,它由导入声明组成。
JLS 14.6定义了空语句:
空语句什么都不做。
EmptyStatement: ;
执行空语句总是正常完成。
可能合法使用空语句:
//loop forever while (true) {;} // the body of this loop is an empty statement.
换句话说,在第一个示例中,您有一个赋值后跟两个空语句。 分号不是严格多余的。
import
部分有自己的语法,没有一个语法规则允许任意的分号。 语法由JLS 7.5指定:
ImportDeclaration: SingleTypeImportDeclaration TypeImportOnDemandDeclaration SingleStaticImportDeclaration StaticImportOnDemandDeclaration SingleTypeImportDeclaration: import TypeName ; ...
ArrayList list = new ArrayList();;; //(有三个;
分号)
在第一个半冒号之后,接下来的两个分号代表空语句,这些只在类部分区域中是合法的,而不是在导入部分区域。
这就是为什么这会产生编译时错误
import java.util.ArrayList ;;; (有三个;
分号)
- 如何在Android中获得气压高度?
- 如何通过PendingIntent将自定义Serializable对象传递给BroadcastReceiver
- Java:使用DES的Decrypt对象时发生StreamCorruptedException
- 检查java中的字符串中是否有辅音
- Struts + GAE java.security.AccessControlException:struts2-core-2.3.15.3.jar的访问被拒绝
- 使用Java android中的Math.round方法舍入到小数点后6位
- 复制和修改数组元素
- android.database.CursorIndexOutOfBoundsException …再一次
- 如何将包含Bitmap的对象传递给另一个活动