如果我可以通過吸氣劑返回參考改變私有變量的值,然後是不是繞過setter方法?它不是打敗了吸氣定型者和私人變量的目的嗎?吸氣-setter和私有變量
public class Test{
private Dimension cannotBeChanged;
public Test(int height, int width)
{
if(height!=3)
cannotBeChanged.height = height;
if(width!=3)
cannotBeChanged.width = width;
}
public Dimension getDimension()
{
return cannotBeChanged;
}
public void setDimension(int height, int width)
{
if(height!=3)
cannotBeChanged.height = height;
if(width!=3)
cannotBeChanged.width = width;
}
public static void main(String [] args)
{
Test testOne = new Test(5,5);
Dimension testSecond = testOne.getDimension();
testSecond.height = 3; //Changed height and width to unwanted values
testSecond.width= 3;
}
以及..如果你不希望別人改變實際的數據,你必須使用防守副本.. 。返回新維(cannotBeChanged); (複製構造函數....) – TheLostMind
我希望我的問題能爲這樣一個愚蠢/簡單的問題得到很多upvotes。 –