Java 方法中的最终变量

Java 方法中的最终变量,java,access-modifiers,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 t

在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, 
如果method2为每个输入返回不同的列表,那么上述代码对于final修饰符是否有效?

问题1:在java中,如果一个方法有一个final变量不是静态的,并且如果我多次调用该方法,那么final变量在每次调用中是否可以有不同的值

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, 
回答1:是的,最后一个变量在每次调用中可以有不同的值

问题2:如果method2为每个输入返回不同的列表,那么上述代码对final修饰符有效吗

回答2:我完全不理解这个问题。

问题1:在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, 
回答1:是的,最后一个变量在每次调用中可以有不同的值

问题2:如果method2为每个输入返回不同的列表,那么上述代码对final修饰符有效吗

回答2:我完全不理解这个问题。

是的,绝对理解。final只意味着不能为该特定变量分配不同的值

如果通过递归或多线程对该方法进行了多次调用,则这些调用是完全独立的变量。

是的,绝对是。final只意味着不能为该特定变量分配不同的值


如果对方法有多个调用,无论是通过递归还是通过多个线程,这些都是完全独立的变量。

调用方法时,请考虑函数堆栈-一旦调用方法,变量就是函数堆栈的一部分-一旦调用方法,变量实际上就是函数堆栈的一部分,你的答案1回答了问题2。这只是我正在编写的代码片段+实际上,你的答案回答了问题2。这只是我正在编写的代码片段+1.