java - 在Java中递归调用方法时如何修改final变量

标签 java

public class MyClass {

    public void display(String s) {
        final char c = s.charAt(0);
        System.out.println(c);
        if (s.length() > 1) {
            display(s.substring(1));

        }
    }

    public static void main(String[] args) {
        MyClass mC = new MyClass();
        mC.display("SampleString");
    }

}

当我执行以下代码时,如何在递归调用显示时修改最终变量 c 的值。 Final 不应该限制用户这样做

最佳答案

您没有修改该变量,每次调用此方法都会获取该变量的一个新实例。如果您只需要一个实例,您可以将声明移动到类主体中并将其声明为“静态”。

关于java - 在Java中递归调用方法时如何修改final变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27285965/

相关文章:

java - SocketTimeoutException 和 Jetty 的问题

java - Gabor 过滤器的不同 'theta' 返回没有方向的图像

java - 并发运行 100,000 个进程

java - 如何捕获通过分布式系统中各个组件传递的事件的时间滞后?

java - Eclipse 更新后 Android 崩溃了

java - spark 2.0 - java.io.IOException : Cannot run program "jupyter": error=2, 没有这样的文件或目录

java - 我收到一个被映射的未知目标实体属性的引用,但我只是没有看到错误

java - Spring-security 与 spring-4.3.0-release 的兼容版本是什么?

java - 带 Spring @Async 注解的方法未执行

java - 如何在 IBM HTTP SERVER 中进行粘性 session 配置?