[問題] java 轉 groovy 一問

看板java作者 (老子我最神)時間9年前 (2014/10/22 19:52), 9年前編輯推噓8(8037)
留言45則, 7人參與, 最新討論串1/1
目前 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

10/22 22:25, , 1F
Object.is() ?
10/22 22:25, 1F

10/22 22:38, , 2F
看了 javadoc, 應該是is沒錯 感謝
10/22 22:38, 2F

10/22 22:46, , 3F
都用groovy了,這種東西就別自己刻了吧!請參考: http:/
10/22 22:46, 3F

10/22 22:46, , 4F
/groovy.codehaus.org/gapi/groovy/transform/EqualsAndH
10/22 22:46, 4F

10/22 22:46, , 5F
ashCode.html
10/22 22:46, 5F

10/22 22:48, , 6F
抱歉忘記縮網址: http://tinyurl.com/oy7mpay
10/22 22:48, 6F

10/22 22:53, , 7F
感謝提供,似乎跟lombok是做相同的事情!!
10/22 22:53, 7F

10/22 22:57, , 8F
groovy不就是生下來簡化java的嗎 XD
10/22 22:57, 8F

10/23 00:55, , 9F
我還以為 groovy 可以生吞 java;所以等於又學另一種?
10/23 00:55, 9F

10/23 00:55, , 10F
當然有人會說'很像了',但我拿 java 去寫 c++,也是很像了
10/23 00:55, 10F

10/23 00:56, , 11F
'很像了'之餘,不一樣就是不一樣的地方,還是新語言無誤.
10/23 00:56, 11F

10/23 01:52, , 12F
生吞 Java 的意思是?相容於 Java 的程式嗎?
10/23 01:52, 12F

10/23 01:53, , 13F
JVM-based 的好處本來就不是跟 Java 語法相容...
10/23 01:53, 13F

10/23 02:00, , 14F
而且事實上是新語言無誤啊,又不像是 TypeScript 之流~
10/23 02:00, 14F

10/23 02:01, , 15F
主要是對 Java-er 友善、而且可以方便和 Java 做結合的
10/23 02:01, 15F

10/23 02:02, , 16F
dynamic language
10/23 02:02, 16F

10/23 02:05, , 17F
我有 po 一篇文,想以 java 寫批次檔,結果有人提 groovy
10/23 02:05, 17F

10/23 02:05, , 18F
當時還以為它可以生吞 java 所有檔...
10/23 02:05, 18F

10/23 02:26, , 19F
我有看到~如果有一種語言這麼萬用,世界上就不會有這麼
10/23 02:26, 19F

10/23 02:27, , 20F
多語言啦!不過對 Jave developer 來說 Groovy 的確是
10/23 02:27, 20F

10/23 02:27, , 21F
script language 的好選擇
10/23 02:27, 21F

10/23 08:58, , 22F
感覺jvm要改名為可運行java的vm阿
10/23 08:58, 22F

10/23 14:43, , 23F
@HuangJC 如果你把它編譯好的話,是可以吞啊。
10/23 14:43, 23F

10/23 16:12, , 24F
我是說,不用我再花心力;我可以接受 Groovy 有更多語法
10/23 16:12, 24F

10/23 16:12, , 25F
但如果我不想學,只想用,它至少要可以生吞 java 全部
10/23 16:12, 25F

10/23 16:12, , 26F
不用花心力改寫..
10/23 16:12, 26F

10/24 20:27, , 27F
說生吞不如說它本身就是一個Java class順便幫你執行script!
10/24 20:27, 27F

10/25 00:00, , 28F
寫 script 時,我想擁有的優點是'不用等 compile time'
10/25 00:00, 28F

10/25 00:00, , 29F
不知時代是不是變了,因為現在 script 有更多特性是
10/25 00:00, 29F

10/25 00:00, , 30F
compiler 沒有的;而 compile time 也漸漸少了(背景執行
10/25 00:00, 30F

10/25 00:01, , 31F
所以 qrtt1 說'把它編譯好的話'那我不能接受;我以為我
10/25 00:01, 31F

10/25 00:01, , 32F
馬上寫 java 語法,它馬上接受,因為它是 script..
10/25 00:01, 32F

10/25 00:02, , 33F
但假如我觀念太舊了,你們說 script 注重的優點不是這個
10/25 00:02, 33F

10/25 00:02, , 34F
那我就改改囉;舉例來說,我們知道 dir 是一道指令
10/25 00:02, 34F

10/25 00:03, , 35F
$a=di, $b=r, 取其值 %a%%b% 可以取出 dir 三字
10/25 00:03, 35F

10/25 00:03, , 36F
於是 %a%%b% 就可以引起 dir 的執行;這我當初和同學聊他
10/25 00:03, 36F

10/25 00:04, , 37F
還不信,一試出來後他就噴汁了 XD;這種 script 特性超強
10/25 00:04, 37F

10/25 00:04, , 38F
但也讓我 debug 時很辛苦,全域搜尋無用,不知大家怎麼學
10/25 00:04, 38F

10/25 00:51, , 39F
除了=之外還有甚麼是不吃Java語法的? 目前還沒遇到
10/25 00:51, 39F

10/25 00:54, , 40F
java不能生吞java? :S
10/25 00:54, 40F

10/25 00:56, , 41F
to HuangJC,我的groovy就是拿來單純驗證'編譯好'的cla
10/25 00:56, 41F

10/25 00:57, , 42F
ss, 因為有時java doc不是那麼完整或是我看不懂
10/25 00:57, 42F

10/25 00:59, , 43F
也懶得在寫java file,所以就用groovy來用
10/25 00:59, 43F

10/25 02:03, , 44F
doc 不完整,試著跑一次就好,我懂;但你不用 jvm 跑?
10/25 02:03, 44F

10/25 02:03, , 45F
groovy(也許它就是內含 jvm?)另外包有多了什麼好處?
10/25 02:03, 45F
文章代碼(AID): #1KHvgDtY (java)