有没有办法让对象只在课外阅读?

时间:2013-02-15 01:51:11

标签: java class object readonly

所以我想说我有一个这样的课:

public class MyClass
{
    public int myInt = 5;
}

现在我不希望这种情况发生:

MyClass myObject = new MyClass();
myObject.myInt = 10;

我只想让“myInt”只读。我怎么能这样做?

4 个答案:

答案 0 :(得分:2)

I just want "myInt" to be read only将其设为final

public class MyClass
{
    public final int myInt = 5;
}

private并添加getter方法

public class MyClass
{
    private int myInt = 5;

    public int getMyInt(){
       return myInt;
    }
}

这两种解决方案都有优点,但也有缺点:

  • final将只在课堂内阅读,
  • 私人不会保证不会使用reflection更改。

答案 1 :(得分:1)

使用private使其无法访问,或使其final使其不可变。

答案 2 :(得分:1)

将变量设为私有并添加getter方法。

public class MyClass
{
    private int myInt = 5;

    public int getMyInt(){
      return this.myInt;
    }
}

MyClass myObject = new MyClass();
myObject.getMyInt();    //This will return 5

答案 3 :(得分:0)

AFAIK没有办法做到这一点。使myInt变为私有并声明一个公共getter函数。你想要完成什么?

public class MyClass
{
    private int myInt = 5;

    public int getInt() { return myInt; }
}