在java中,我尝试使用函数返回值赋值。但我得到了编译错误。任何人都可以帮我解决导致错误的原因吗?
代码是这样的:
public class A{
private static final set<String> set1 = getSet();
private Static Set<String> getSet(){
Vector<String> vector1 = getVector();//some function which return the Vector of type String
if(vector1!=null){
set1=new HashSet<String>(vactor1);
}
else{
set1= new HashSet<String>();
}
}
}
答案 0 :(得分:3)
private static final set<String> set1 = getSet();
set1
为final
,意味着无法更改。
然而,
set1=new HashSet<String>(vactor1);
和
set1= new HashSet<String>();
试图改变它。见JLS 4.12.4. final Variables:
变量可以声明为
final
。final
变量可能只是 分配给一次。声明变量final
可以起到很大作用 文档,其价值不会改变,可以帮助避免 编程错误。如果将
final
变量分配给除非,则为编译时错误 在作业之前,它肯定是未分配的(§16)。
我不知道这是否是拼写错误,但static
应该全部为小写,而不是Static
。
答案 1 :(得分:0)
您的陈述
private static final Set<String> set1 = getSet();
表示:它调用方法getSet
,它希望返回一个值,然后将返回的值分配给set1
。 (请注意,它必须是Set
,而不是set
。)
为了实现这一点,getSet
实际上必须使用return
语句返回一个值。而不是
set1=new HashSet<String>(vactor1);
声明应为
return new HashSet<String>(vector1); // make sure vector1 is spelled correctly
与set1=
中的其他getSet
语句类似。