看板 java 關於我們 聯絡資訊
目前 groovy 新手,語法也不熟 在練習遇到一個問題 通常 java override equals 會這樣 class MyClass { private String field1; private String field2; // ... getter && setter @Override public boolean equals(Object obj) { if(obj == null) return false; if(obj == this) return true; if(obj.getClass() != this.getClass()) return false; MyClass mc = (MyClass) obj; return field1.equals(mc.getField1()) && field2.equals(mc.getField2()); } } 若改成 groovy, == 會被轉成 equals,所以會無限迴圈。 目前知道 if(obj == null) 可以改成 if(obj) 但是 if(obj == this) 要怎麼改? groovy 有提供這種直接比較位址的方式嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.192.133 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1413978765.A.DE2.html ※ 編輯: cyclone350 (123.193.192.133), 10/22/2014 19:55:21
luoqr: Object.is() ? 10/22 22:25
cyclone350: 看了 javadoc, 應該是is沒錯 感謝 10/22 22:38
nOhiTmE: 都用groovy了,這種東西就別自己刻了吧!請參考: http:/ 10/22 22:46
nOhiTmE: /groovy.codehaus.org/gapi/groovy/transform/EqualsAndH 10/22 22:46
nOhiTmE: ashCode.html 10/22 22:46
nOhiTmE: 抱歉忘記縮網址: http://tinyurl.com/oy7mpay 10/22 22:48
cyclone350: 感謝提供,似乎跟lombok是做相同的事情!! 10/22 22:53
nOhiTmE: groovy不就是生下來簡化java的嗎 XD 10/22 22:57
HuangJC: 我還以為 groovy 可以生吞 java;所以等於又學另一種? 10/23 00:55
HuangJC: 當然有人會說'很像了',但我拿 java 去寫 c++,也是很像了 10/23 00:55
HuangJC: '很像了'之餘,不一樣就是不一樣的地方,還是新語言無誤. 10/23 00:56
carylorrk: 生吞 Java 的意思是?相容於 Java 的程式嗎? 10/23 01:52
carylorrk: JVM-based 的好處本來就不是跟 Java 語法相容... 10/23 01:53
carylorrk: 而且事實上是新語言無誤啊,又不像是 TypeScript 之流~ 10/23 02:00
carylorrk: 主要是對 Java-er 友善、而且可以方便和 Java 做結合的 10/23 02:01
carylorrk: dynamic language 10/23 02:02
HuangJC: 我有 po 一篇文,想以 java 寫批次檔,結果有人提 groovy 10/23 02:05
HuangJC: 當時還以為它可以生吞 java 所有檔... 10/23 02:05
carylorrk: 我有看到~如果有一種語言這麼萬用,世界上就不會有這麼 10/23 02:26
carylorrk: 多語言啦!不過對 Jave developer 來說 Groovy 的確是 10/23 02:27
carylorrk: script language 的好選擇 10/23 02:27
swpoker: 感覺jvm要改名為可運行java的vm阿 10/23 08:58
qrtt1: @HuangJC 如果你把它編譯好的話,是可以吞啊。 10/23 14:43
HuangJC: 我是說,不用我再花心力;我可以接受 Groovy 有更多語法 10/23 16:12
HuangJC: 但如果我不想學,只想用,它至少要可以生吞 java 全部 10/23 16:12
HuangJC: 不用花心力改寫.. 10/23 16:12
luoqr: 說生吞不如說它本身就是一個Java class順便幫你執行script! 10/24 20:27
HuangJC: 寫 script 時,我想擁有的優點是'不用等 compile time' 10/25 00:00
HuangJC: 不知時代是不是變了,因為現在 script 有更多特性是 10/25 00:00
HuangJC: compiler 沒有的;而 compile time 也漸漸少了(背景執行 10/25 00:00
HuangJC: 所以 qrtt1 說'把它編譯好的話'那我不能接受;我以為我 10/25 00:01
HuangJC: 馬上寫 java 語法,它馬上接受,因為它是 script.. 10/25 00:01
HuangJC: 但假如我觀念太舊了,你們說 script 注重的優點不是這個 10/25 00:02
HuangJC: 那我就改改囉;舉例來說,我們知道 dir 是一道指令 10/25 00:02
HuangJC: $a=di, $b=r, 取其值 %a%%b% 可以取出 dir 三字 10/25 00:03
HuangJC: 於是 %a%%b% 就可以引起 dir 的執行;這我當初和同學聊他 10/25 00:03
HuangJC: 還不信,一試出來後他就噴汁了 XD;這種 script 特性超強 10/25 00:04
HuangJC: 但也讓我 debug 時很辛苦,全域搜尋無用,不知大家怎麼學 10/25 00:04
cyclone350: 除了=之外還有甚麼是不吃Java語法的? 目前還沒遇到 10/25 00:51
luoqr: java不能生吞java? :S 10/25 00:54
cyclone350: to HuangJC,我的groovy就是拿來單純驗證'編譯好'的cla 10/25 00:56
cyclone350: ss, 因為有時java doc不是那麼完整或是我看不懂 10/25 00:57
cyclone350: 也懶得在寫java file,所以就用groovy來用 10/25 00:59
HuangJC: doc 不完整,試著跑一次就好,我懂;但你不用 jvm 跑? 10/25 02:03
HuangJC: groovy(也許它就是內含 jvm?)另外包有多了什麼好處? 10/25 02:03