gpt4 book ai didi

java - 无法为最终变量 'name' 赋值

转载 作者:行者123 更新时间:2023-11-29 09:58:47 25 4
gpt4 key购买 nike

为什么 Java 不允许我间接初始化最终变量?我不明白为什么它不应该工作,我的意思是该方法将始终运行,那么如果直接初始化或通过方法初始化有什么区别?

此代码有效:

package com.company;

public class Person {

private final String name;

public Person() {
name = "bob";
}
}

这个没有。 (即使我摆脱了 IO 代码并硬编码分配给名称的值)

package com.company;

import java.util.Scanner;

public class Person {

private final String name;

public Person() {
askName();
}

public void askName() {
Scanner scanner = new Scanner(System.in);
name = scanner.nextLine();
}
}

最佳答案

final 字段必须在构造函数中设置。您可以执行以下操作。

import java.util.Scanner;

public class Person {

private final String name;

public Person() {
name = askName();
}

public static String askName() {
Scanner scanner = new Scanner(System.in);
return scanner.nextLine();
}
}

但是,更好的选择可能会注入(inject)您需要的值(value)。

import java.util.Scanner;

public class Person {

private final String name;

public Person(String name) {
this.name = name;
}

public static Person askName() {
Scanner scanner = new Scanner(System.in);
return new Person(scanner.nextLine());
}
}

关于java - 无法为最终变量 'name' 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52628289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com