我有一个静态方法。在我转换变量的方法中,它在eclipse中显示一个错误,说变量应该被声明为final。 我可以知道这个的原因吗,你应该将静态方法中的变量声明为final吗?我正在编写一个Android应用程序,我应该将该应用程序的当前Context作为参数传递。因此,当我将当前上下文传递给方法并尝试将其复制到局部变量中时,我收到此错误,说该变量应声明为final。 我的方法是这样的:
public static void myfunc(Context ctx, int a)
{
Context myctx=ctx;
}
错误显示在Context myctx = ctx的行;宣布并要求我宣布它为最终版。
答案 0 :(得分:7)
不一定。你可以在静态函数中有一个非final变量。
经典示例:
public static void main(String args[])
{
int i = 10;
}
答案 1 :(得分:6)
编译器的常规设置不会这样做。你没有被迫宣布它是最终的。
有第三方工具(如checkstyle和pmd)可以添加错误和警告。在这种情况下,变量在方法中没有其他地方改变,因此可以声明final
如果你在变量下面实例化了一个匿名类,并在那里使用变量(但你没有向我们展示) - 那么它必须被声明为final。
答案 2 :(得分:2)
不,事实并非如此。 您可以在静态方法中创建非最终变量。
答案 3 :(得分:1)
如果你声明一个变量然后不要修改它,它可能会被触发。
建议通过将其声明为final,允许某些JVM优化。