默認我有這樣的一個類:不想設置專用Java中
if (people.count < 10)
return false;
但計數是undermarked用紅說 變化計數的知名度,默認
count在另一個類中是私有的。但我不想將其更改爲默認值。 我知道這是一個不好的做法。 如何讓它在沒有二傳手和吸氣器的情況下工作?
默認我有這樣的一個類:不想設置專用Java中
if (people.count < 10)
return false;
但計數是undermarked用紅說 變化計數的知名度,默認
count在另一個類中是私有的。但我不想將其更改爲默認值。 我知道這是一個不好的做法。 如何讓它在沒有二傳手和吸氣器的情況下工作?
您可以更改可見性或暴露吸氣劑。要求另一種方法來實現這一點,字面上問:「我如何暴露變量而不暴露它?」所以,你的電話。
或切換到Clojure(它不會將「private」視爲私人:) – 2013-04-11 17:46:20
if (people.getCount() < 10)
return false;
從問題:「如何在沒有setter和getters的情況下使其工作?」 – 2013-04-11 17:49:42
你只有兩個選擇;改變可見性或使用獲取者和設置者。使用getter和setter的好處在於它遵守了Java中封裝的原則,這很重要。
領域count
是私有的,因爲它是在類encapsulated。除了通過班級的非私人成員之外,您不打算訪問它。
將其訪問權限更改爲「默認」將很容易但有害。
通過一些黑客訪問它(反射,本地方法,...)會比較複雜,仍然是有害的。
暴露吸氣劑很容易和合適。
爲什麼你不想使用getters和setter? – Franklin 2013-04-11 17:44:57
除了獲得者和制定者以及公共領域之外,你唯一的其他(並且在這種情況下真的很糟糕)選項是反思 – 2013-04-11 17:45:33
*我怎樣才能讓它在沒有制定者和獲得者的情況下工作?*簡單的答案:**你不能**。這看起來更像是一個設計問題(這就是爲什麼我不喜歡它)的奇思妙想。你可以使用反射來處理這個工作,但它是一個黑客選擇,而不是好的設計和實踐(也許這取決於你) – 2013-04-11 17:46:23