2013-02-15 38 views
0

因此,可以說我有一個這樣的類:有沒有什麼辦法讓對象只在課堂以外閱讀?

public class MyClass 
{ 
    public int myInt = 5; 
} 

現在我不希望這種情況發生:

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

我只是想「敏」爲只讀。我怎樣才能做到這一點?

+3

讓它變得私密,只是提供一個吸氣劑 – Reimeus 2013-02-15 01:53:07

回答

1

使用private使其不可訪問,或使其final使其不可變。

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; 
    } 
} 

兩種解決方案的優點,但也缺點:

  • 最終將使其只讀也在裏面類,
  • 私人不會保證它不會被更改爲reflection
+0

你是什麼意思「用反射改變」? – seedasharp 2013-02-15 02:07:05

+0

@seedasharp'Class'類具有返回'Field'對象的方法'getDeclaredField'。 Field有方法'setAccessible()',如果你用'true'調用它,它將允許訪問這個字段。 Field也有'set'方法可以用來改變某個對象的字段值。看看這個例子http://ideone.com/QFHqox – Pshemo 2013-02-15 02:19:40

1

使變量變爲private並添加getter方法。

public class MyClass 
{ 
    private int myInt = 5; 

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

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

AFAIK有沒有辦法做到這一點。將myInt私有並聲明一個公共getter函數。你想達到什麼目的?

public class MyClass 
{ 
    private int myInt = 5; 

    public int getInt() { return myInt; } 
} 
相關問題