Re: [問題] 封裝Getter/Setter

看板java作者 (痞子軍團團長)時間12年前 (2013/07/18 14:32), 編輯推噓6(606)
留言12則, 7人參與, 最新討論串2/2 (看更多)
我直接只留最後推文的部份 ※ 引述《a60301 (mingtsay〃小喵)》之銘言: : 我看很多 Java 程式碼都是寫成: : public class Foo { : private int _bar; : : public int getBar() { : return _bar; : } : : public void setBar(int bar) { : if (bar >= 0) _bar = bar; : } : : public Foo(int bar) { : _bar = bar; : } : public Foo() { : this(0); : } : } : : 所以使用起來會是像這樣的用法: : : Foo foo = new Foo(); : foo.setBar(3); : System.out.println(foo.getBar()); // 3 : foo.setBar(-8); // invalid bar : System.out.println(foo.getBar()); // 3 : : 我只是期待可以這樣做同時達成Getter/Setter概念: : : foo.bar = 3; // _bar = 3 : foo.bar = -8; // _bar won't change : : 不過看起來只有VB, JS, PHP才有這種特殊用法, : 至於C/C++, Java我還是乖乖開getFoo/setFoo的function好了… : → abola921:那不是把bar宣告成public 就好不是嗎... 07/18 13:55 我覺得這個問題可以從樓上的推文作結,也可以從樓上的推文作起始 XD 先說 abola921 推文的問題 基本上那個 VB 的語法還是會實際去跑 setter 所以在上頭的例子當中,原 po 期望在 foo.bar = -8; 之後,foo.bar 的值還是 3。 所以,不是把 Foo 的 bar 宣告成 public 就可以解決的事情 畢竟 Java 的 assign 就是 assign。 我想,一切的癥結點也是在這句上 Java 的 assign 就是 assign 我先說我不知道 VB / PHP 會怎麼處理這件事情 JavaScript... 其實我不知道 JavaScript 有這功能 [死] (我也算是寫了快一年的 JS 阿 [被毆飛]) 請試想下面這個 case public class Foo { public int open; private int close; //假設 open 沒有 getter/setter //省略 close 的 getter/setter } 那麼,按照原 po 的想法 當我看到這樣的 code 的時候,我要從何 trace 起? Foo foo = new Foo(); foo.open = 1; foo.close = 1; 更不用說,如果 open 其實也有 getter/setter 的話...... 所以,我其實看不出來原 po 希望的那個語法... 也許這個 syntax sugar 有人喜歡這味 但是跟 Java 一貫講究囉唆以求(盡量)不會有模糊不清的部份 我覺得是相違背的 最後,我知道的 EL 是會去呼叫 setter 算是最接近原 po 要得東西 只是 EL 理論上也不是直接用在 Java code 當中 當然,強調一下 這只是我個人的想法,也許根本就是我搞錯什麼了 Orz -- 錢鍾書: 說出來的話 http://www.psmonkey.org 比不上不說出來的話 Java 版 cookcomic 版 只影射著說不出來的話 and more...... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.5.37

07/18 17:18, , 1F
orz 看的懂原po在問啥了
07/18 17:18, 1F

07/18 18:29, , 2F
推,忘了考慮到Java的Coding Style問題,果然每個程式碼的
07/18 18:29, 2F

07/18 18:30, , 3F
屬性(?)都不太一樣,有的是御姐有的是蘿莉甚至是正太(?)
07/18 18:30, 3F

07/18 18:39, , 4F
像是編碼會遇到幼女控
07/18 18:39, 4F

07/18 18:49, , 5F
幼女控XDDDDDD
07/18 18:49, 5F

07/18 19:30, , 6F
java 好像不支援 overload operator orz
07/18 19:30, 6F

07/18 19:33, , 7F
不過 native 大神可以解決一切問題 !
07/18 19:33, 7F

07/19 00:05, , 8F
幼女控+1....不對啊!歪串了Orz
07/19 00:05, 8F

07/19 16:10, , 9F
老實說,回到最後,我不太知道原po想要什麼東西
07/19 16:10, 9F

07/19 16:13, , 10F
最後一個回文是我錯!! 現在回頭看我真的沒發現他說的事
07/19 16:13, 10F

07/19 16:21, , 11F
太不專心看文就回,改進改進,歹勢
07/19 16:21, 11F

07/19 16:36, , 12F
沒有這麼嚴重啦 XD 要說犯錯我已經有罄竹難書的成就了
07/19 16:36, 12F
文章代碼(AID): #1HvulubG (java)
討論串 (同標題文章)
文章代碼(AID): #1HvulubG (java)