如果我的toString返回String静态引用,是否有任何未来问题: -
public static String example = "any problem";
@Override
public String toString() {
// TODO Auto-generated method stub
return example;
}
答案 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)
如果您在询问以后是否在修改变量时遇到问题,则答案为否。您可以修改静态变量。