toString为特定类的每个对象返回相同的String?

时间:2013-11-23 08:22:54

标签: java string object static return

如果我的toString返回String静态引用,是否有任何未来问题: -

public static String example = "any problem";

    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return example;
    }

4 个答案:

答案 0 :(得分:2)

没有问题,但是toString方法用于表示对象状态,而不是类状态,所以你可能想重新考虑你的toString实现。此外,您的字符串是公开的,任何人都可以修改。

答案 1 :(得分:2)

因为字符串是不可变的,所以没有调用者可以更改任何其他调用者具有的基础字符串引用;因此它是安全的。但是,它不是很有用,因为该值由类的所有实例共享 - 为什么不使用return this.getClass().getName();,如果这是你想要的?

答案 2 :(得分:1)

不,这很好。我想为了清楚起见,我会使用以下内容来强调它是静态的,不应该更改(用实际的类名替换ClassName):

public static final String example = "any problem";

@Override
public String toString() {
    return ClassName.example;
}

否则,虽然没关系。我不完全确定为什么 希望为每个实例返回相同的toString();理想情况下,它应该唯一地表示一个类的不同实例,如果它对你的情况有意义的话。

次要旁注:我删除了// TODO评论。

答案 3 :(得分:0)

如果您在询问以后是否在修改变量时遇到问题,则答案为否。您可以修改静态变量。