因此,可以說我有一個這樣的類:有沒有什麼辦法讓對象只在課堂以外閱讀?
public class MyClass
{
public int myInt = 5;
}
現在我不希望這種情況發生:
MyClass myObject = new MyClass();
myObject.myInt = 10;
我只是想「敏」爲只讀。我怎樣才能做到這一點?
因此,可以說我有一個這樣的類:有沒有什麼辦法讓對象只在課堂以外閱讀?
public class MyClass
{
public int myInt = 5;
}
現在我不希望這種情況發生:
MyClass myObject = new MyClass();
myObject.myInt = 10;
我只是想「敏」爲只讀。我怎樣才能做到這一點?
使用private
使其不可訪問,或使其final
使其不可變。
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
。你是什麼意思「用反射改變」? – seedasharp 2013-02-15 02:07:05
@seedasharp'Class'類具有返回'Field'對象的方法'getDeclaredField'。 Field有方法'setAccessible()',如果你用'true'調用它,它將允許訪問這個字段。 Field也有'set'方法可以用來改變某個對象的字段值。看看這個例子http://ideone.com/QFHqox – Pshemo 2013-02-15 02:19:40
使變量變爲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
AFAIK有沒有辦法做到這一點。將myInt私有並聲明一個公共getter函數。你想達到什麼目的?
public class MyClass
{
private int myInt = 5;
public int getInt() { return myInt; }
}
讓它變得私密,只是提供一個吸氣劑 – Reimeus 2013-02-15 01:53:07