繁体   English   中英

在单个实例(Java)中更改静态变量的值

[英]Change value of a static variable in a single instance (Java)

我才刚刚开始学习Java。 说,如果您创建以下类:

class FamilyMember {
    static String lastName = "Doe";
    String name;
    int age;
}

现在,您为女儿创建一个实例,并将其名字设置为Ann,等等。如果她结婚或决定更改姓氏,您将如何只更改其实例的lastName值而不更改整个类?

首先,我尝试创建两个实例:

FamilyMember john = new FamilyMember();
FamilyMember ann = new FamilyMember();
ann.lastName = "Stewart";

但这改变了整个班级。 我尝试在FamilyMember类中创建一个方法来设置一个新的lastName:

void changeLastName(String newName) {
    lastName = newName;
}

甚至尝试在void之前添加“ static”。 但是所有这些都只是在改变整个类的价值。 我在论坛上发现了类似的问题,但都没有解决这个特定问题。

但这改变了整个班级。

确实,您将姓氏设为类成员,而不是实例成员。 类成员不与实例绑定。 因此,您看到了您不想要的奇怪行为。

只需删除静态。

private String lastName = "Doe";

您可以删除姓氏的静态修饰符,如果要为每个实例设置一个默认值,以后可以对其进行修改,则可以为其使用多个构造函数,也可以将setter用作姓氏。

例如:

class FamilyMember {
    String lastName;
    String name;
    int age;

    public FamilyMember(final String name, final int age) {
        this.lastName = "Doe";
        this.name = name;
        this.age = age;
    }

    public FamilyMember(final String lastName, final String name, final int age) 
    {
            this.lastName = lastName;
            this.name = name;
            this.age = age;
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM