Java编译器错误没有任何意义(<identifier> expected)

The*_*111 6 java casting

我已经做了很多搜索这个编译器错误<identifier> expected意味着什么,并且它们似乎都不适用于我的情况.如果这是重复或基本信息,真的很抱歉,但我找不到任何地方.

以下代码工作正常.请注意,我是肯定myObject1的,HashSet<String>所以演员阵容还可以.

@SuppressWarnings("unchecked")
HashSet<String> s1 = (HashSet<String>) myObject1;
Run Code Online (Sandbox Code Playgroud)

以下代码不能正常工作.它会编译,但有警告.

@SuppressWarnings("unchecked")
HashSet<String> s1;
s1 = (HashSet<String>) myObject1;
Run Code Online (Sandbox Code Playgroud)

那么我尝试下面的代码.

@SuppressWarnings("unchecked")
HashSet<String> s1;
@SuppressWarnings("unchecked")
s1 = (HashSet<String>) myObject1;
Run Code Online (Sandbox Code Playgroud)

现在它拒绝编译,给我一个令我<identifier> expected困惑的错误.^我命令行中的符号指向=最后一行的符号.我不确定到底是什么我可以预期把它放在s1和...之间=.

有任何想法吗?谢谢!

Jon*_*eet 11

您不能将注释应用于简单的赋值语句.从JLS第9.7节:

注释可以在任何声明中用作修饰符,无论是包(第7.4.1节),类(第8.1.1节)(包括枚举(第8.9节)),接口(第9.1.1节)(包括注释类型(第9.6节)) ),field(§8.3.1,§9.3),方法(§8.4.3,§9.4),形式参数(§8.4.1),构造函数(§8.8.3)或局部变量(§14.4.1) .

我同意编译器错误消息可能相当清楚,诚然......

  • 使用临时变量并稍后将临时变量分配给s1,而临时变量的类型正确 (3认同)