【问题标题】:C++ similar const method in Java [duplicate]Java中的C ++类似const方法[重复]
【发布时间】:2016-11-23 19:40:20
【问题描述】:

如果在 C++ 中方法声明的末尾有const,则表示您不能更改任何成员数据。因为this 指针将是const。 Java中有类似的东西吗?如果没有,是否有类似的方法来防止数据成员被更改?

#include <iostream>

class MyClass
{
private:
    int value_;
public:
    void Foo() const
    {
        value_ = 123;
    }
};

可能出现错误信息,assignment of member 'MyClass::value_' in read-only object

【问题讨论】:

  • 恐怕Java中不存在,太可惜了。
  • 最接近的匹配可能是 final 关键字。虽然我不太清楚const 的含义。
  • 怎么来的?你能解释一下吗? @马文
  • @snr: en.wikipedia.org/wiki/Final_(Java) (可能无法更好地解释它;简而言之:这意味着您只能分配一次变量,从那时起有效地将其设为只读)。

标签: java


【解决方案1】:

java 等价物是:

class MyClass {
    private final int value_; // must be assigned at construction

    public MyClass() {
        value_ = 42; // must assign a value
    }

    public void foo() {
        value_ = 123; // compile error if you try to assign to a final field
    }
};

【讨论】:

  • 是的,类似的等价物。 如果我想在另一个成员方法中更改对象变量怎么办?我认为没有办法这样做。因此,它使答案与问题最接近。
  • @snr 没有办法。 final最终的。如果有帮助,您可以创建方法 final 以防止子类覆盖它。除此之外,您必须设计您的类以允许在内部更改某些状态,但不允许外部代码更改状态。 AFAICT 没有内置的方法来支持(我认为)你想做的事情。
  • 感谢您的关注。我喜欢从像你这样的鉴赏家对像我这样的新(年轻)人的回应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多