方法中的最终变量

sra*_*001 1 java access-modifiers

在java中,如果方法有一个最终变量(不是静态的),并且如果我多次调用该方法,那么最终变量在每次调用中都可以有不同的值吗?

public void method1(String msg){
        final ArrayList<MessageObject> list =  method2(msg);
        // code that uses list (example just prints) 
}

method1("one")
method1("two") are two calls, 
Run Code Online (Sandbox Code Playgroud)

如果method2()为每个输入返回不同的列表,上面的代码是否有效(相对于最终修饰符?)

Jon*_*eet 6

是的,一点没错.final 表示不能为该特定变量分配不同的值.

如果您对该方法有多个调用(无论是通过递归还是多个线程),那么这些调用都是完全独立的.