Java 什么是;多重标记”;什么意思?
我尝试以以下方式使用集合:Java 什么是;多重标记”;什么意思?,java,eclipse,compiler-errors,markers,Java,Eclipse,Compiler Errors,Markers,我尝试以以下方式使用集合: static Set<String> languages = new HashSet<String>(); languages.add("en"); languages.add("de"); 我不知道我做错了什么。有人能帮我吗?“多个标记”的意思是“这行有不止一个错误” 但基本问题是,您试图将语句直接插入到类中,而不是将它们放入构造函数、方法、初始值设定项等中 我建议您将代码更改为以下内容: static Set<String>
static Set<String> languages = new HashSet<String>();
languages.add("en");
languages.add("de");
我不知道我做错了什么。有人能帮我吗?“多个标记”的意思是“这行有不止一个错误”
但基本问题是,您试图将语句直接插入到类中,而不是将它们放入构造函数、方法、初始值设定项等中
我建议您将代码更改为以下内容:
static Set<String> languages = getDefaultLanguages();
private static Set<String> getDefaultLanguages()
{
Set<String> ret = new HashSet<String>();
ret.add("en");
ret.add("de");
return ret;
}
static Set languages=getDefaultLanguages();
私有静态集getDefaultLanguages()
{
Set ret=new HashSet();
补充说明(“en”);
补充说明(“de”);
返回ret;
}
您正在做非法的事情:
这两种情况之一(如果代码处于类级别):
//类级别的字段定义
静态集语言=新的HashSet();
//此处不允许使用语句,以下行是非法的:
语言。添加(“en”);
语言。添加(“de”);
或者这个:
private void foo(){
// static keyword not legal inside methods
static Set<String> languages = new HashSet<String>();
languages.add("en");
languages.add("de");
}
private void foo(){
//静态关键字在方法内部不合法
静态集语言=新的HashSet();
语言。添加(“en”);
语言。添加(“de”);
}
相反,您可以使用静态初始值设定项来初始化集合:
static Set<String> languages = new HashSet<String>();
static{
languages.add("en");
languages.add("de");
}
static Set languages=new HashSet();
静止的{
语言。添加(“en”);
语言。添加(“de”);
}
这意味着在一行中您会遇到多个错误
下面的图片描述了最好的。请参考@Jon Skeet了解如何解决这些错误
谢谢你的回答。不过,我不明白。您所说的“将语句直接插入类”是什么意思。正确的语法是什么?@Roman:正确的语法是什么?你不能做你想做的事情——语句不能直接包含在类声明中;它们必须在初始值设定项中,等等。这就是为什么我提供了一个方法来创建集合并填充它,然后从变量声明中调用该方法。谢谢。现在我明白你的意思了。我可以为静态整型变量设置值,而无需使用
私有static
。我只是假设我可以像处理整数一样处理映射。但是,由于一些我不知道的原因,我不能。但是没关系。我只使用私有静态
。谢谢。@Roman:不,这与整数无关。我不清楚您以前在做什么,但是如果您在变量声明中没有“静态”,那么它就不是静态变量。。。
private void foo(){
// static keyword not legal inside methods
static Set<String> languages = new HashSet<String>();
languages.add("en");
languages.add("de");
}
static Set<String> languages = new HashSet<String>();
static{
languages.add("en");
languages.add("de");
}