Discussion:
[問題] compile後出現的note
(时间太久无法回复)
t***@ptt.cc
2006-07-04 07:24:33 UTC
Permalink
compile code之後出現
Note: smain.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

請問這是什麼一回事呀
因為其他code也出現一樣的東西@@
謝謝大家

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.166.200.162
._.
2006-07-04 07:56:33 UTC
Permalink
sun 基本上傾全力維護新版本與之前的相容性 (某本推銷 Ruby 的書說的)

所以儘管有些 method 過氣或者是不推薦使用了.

依舊會放在新版本裡面, 只是會標註這是被廢棄的 API, 不推薦使用.

讓程式撰寫者知道說, 他應該要改用新的 method 去撰寫.

但是你不想換, 也沒人能拿槍指著你的頭要你換掉就是了.

※ 引述《tinkywinky ()》之銘言:
: compile code之後出現
: Note: smain.java uses or overrides a deprecated API.
: Note: Recompile with -Xlint:deprecation for details.
: 請問這是什麼一回事呀
: 因為其他code也出現一樣的東西@@
: 謝謝大家

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.148.49
t***@ptt.cc
2006-07-04 08:13:51 UTC
Permalink

謝謝你用心的回答 哈哈
我沒有問清楚
我想問的是要怎麼解決這個問題
怎麼用-Xlint:deprecation recompile?
謝謝囉

※ 引述《ogamenewbie (._.)》之銘言:
: ==站內信件==
: ==嚴禁轉出==
: ※ 引述《tinkywinky ()》之銘言:
: : compile code之後出現
: : Note: smain.java uses or overrides a deprecated API.
: : Note: Recompile with -Xlint:deprecation for details.
: : 請問這是什麼一回事呀
: : 因為其他code也出現一樣的東西@@
: : 謝謝大家
: 英文課...
: Note: 注意的意思.
: smain.java: 檔名.
: uses: 使用
: or: 或
: overrides: 我從來都沒記起來這個的中文過. 反正 over 有兩種.
: ride 是把繼承來的幹掉自己處理, load 就是載的東西不一樣.
: (沒記錯的話.)
: a: 一個.
: deprecated: 廢棄的
: API: 這可不是 American Petroleum Institute.
: 而是 Application Program Interface. 例如說你呼叫的那些 method 啦...etc
: http://java.sun.com/j2se/1.5.0/docs/api/
: 所以拼起來就是 注意:smain.java 檔案使用或 override 一個廢棄的 API.
: 後面那句
: Recompile: compile 是編譯, Re-是再-或重新-, Recompile 就是重新編譯或再編譯
: with: 搭配
: -Xlint:deprecation: javac 的參數
: for: 為了
: detail: 詳細資訊
: 這句就比較複雜摟, 重新編譯什麼呢, 文字裡面沒有說, 因為省略掉了.
: 事實上這邊就是指你前一行提到的檔案.
: with 要往前放會比較順, 所以就變成
: 注意:搭配 -Xlint:deprecation 這個參數來重編譯 smain.java 以取得詳細資訊.

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.166.200.162
._.
2006-07-04 08:47:47 UTC
Permalink
※ 引述《superlubu (勁過呂布)》之銘言:
(恕刪)
: 因為每一版新的 java API 都會對舊版本進行一些修改,有時候為了提高
: 整體的效能,於是將舊版本的某些 method 重新編寫,而重寫過程之中,
: 新舊兩個 method 可能會出現某些相異,令到開發小組必須重新定義該
: method。

其實不一定只是將 method 更動而已,

像 Date 整個就被 deprecate 了. >_<

還有一些狀況是為了符合命名規則而更名... XD

: 不過在重寫時也要注意程式在什麼的系統下跑。因為有些比較「穩健」的
: 系統(難聽點就是「守舊」啦),還是堅持在跑 JDK1.2.1 (不需訝異,我
: 工作的地方,那班古董級的老闆堅持 JDK1.2.1 比較穩)。所以要是你把
: 東西都改成 1.4 甚或以上的標準,就可能變成不能在實際環境中跑嘍。
: 當然,如果只是自己寫寫玩玩的,那還是用最 update 的吧。

ACM 也是只到 1.2.1 的樣子 (死)

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.148.49
幾百年沒換暱稱
2006-07-07 01:39:26 UTC
Permalink
Post by ._.
※ 引述《superlubu (勁過呂布)》之銘言:
(恕刪)
: 因為每一版新的 java API 都會對舊版本進行一些修改,有時候為了提高
: 整體的效能,於是將舊版本的某些 method 重新編寫,而重寫過程之中,
: 新舊兩個 method 可能會出現某些相異,令到開發小組必須重新定義該
: method。
其實不一定只是將 method 更動而已,
像 Date 整個就被 deprecate 了. >_<
請問你是說哪一版JDK?或者哪一個Date? java.util or java.sql?
我剛剛看了最新的1.5
不論是哪一個Date,都只是幾個method or constructor被deprecated....
Post by ._.
還有一些狀況是為了符合命名規則而更名... XD
: 不過在重寫時也要注意程式在什麼的系統下跑。因為有些比較「穩健」的
: 系統(難聽點就是「守舊」啦),還是堅持在跑 JDK1.2.1 (不需訝異,我
: 工作的地方,那班古董級的老闆堅持 JDK1.2.1 比較穩)。所以要是你把
: 東西都改成 1.4 甚或以上的標準,就可能變成不能在實際環境中跑嘍。
: 當然,如果只是自己寫寫玩玩的,那還是用最 update 的吧。
ACM 也是只到 1.2.1 的樣子 (死)
--
----------------------------------------------
Yen-Lin Yin
Applications Developer
Some City, Some State
----------------------------------------------
--
☆ [Origin:椰林風情] [From: host-24-225-146-213.patmedi] [Login: **] [Post: **]
._.
2006-07-08 17:09:08 UTC
Permalink
※ 引述《***@bbs.ntu.edu.tw (幾百年沒換暱稱)》之銘言:
: ==> ***@ptt.cc (._.) 提到:
: > (恕刪)
: > 其實不一定只是將 method 更動而已,
: > 像 Date 整個就被 deprecate 了. >_<
: 請問你是說哪一版JDK?或者哪一個Date? java.util or java.sql?
: 我剛剛看了最新的1.5
: 不論是哪一個Date,都只是幾個method or constructor被deprecated....

java.util.Date...

如果你只是堅持 "sun 並沒有把 Date 整個 deprecated 掉".

那我的回應也只是簡單的 "恩, 你對".

我比較好奇的是...

你打算用剩下的那幾個 method 或 constructor 做什麼?...

Date()? 我現在更偏好用 System.currentTimeMillis()
Date(long date)? Calendar 有 void setTimeInMillis(long millis)

after? Calendar 有 after.
before? Calendar 有 before.
getTime? Calendar 有 getTimeInMillis.
setTime? Calendar 有 setTimeInMillis.

名義上 Date 還在啦. 或許實際上 Calendar 底層也還是 Date.

但是實際上 Date 的功用, 全部都可以被 Calendar 跟 DateFormat 取代掉.

就我個人感覺, 只是 sun 沒有把 2/6 的 constructors,
以及 9/27 的 method 也打上 deprecated 而已...
(扣掉 clone, compareTo, equals, hashCode, toString 只剩 4/27)

我也不會刻意為了一個 long 去 new 一個 Date...

如果你知道 Date 有什麼特別的好處, 也請不吝指教.

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.33.253
._.
2006-07-08 23:09:10 UTC
Permalink
※ 引述《***@bbs.wretch.cc (飛)》之銘言:
: sql Date 是繼承 util Date。
: JDBC 沒有 return Calendar 這回事。

這個要看廠商實作吧...

http://zh.wikipedia.org/wiki/JDBC

注:這種類型匹配不是強制性標準,特定的 JDBC 廠商可能會改變這種類型匹配。
例如 Oracle 中的 DATE 類型是包含時分秒,而 java.sql.Date 僅僅支持年月日。

: 做 date format 也要用到 Date。

但也可以純用 Calendar
DateFormat 可以 setCalendar(Calendar newCalendar)

: Calendar 也有個 getTime() 會return Date。

然後你要用這個 Date 做怎樣的處理呢?

: 說Date被depecated,實在是有點牽強。

"恩, 你對"

: ※ 引述《***@ptt.cc (._.)》之銘言:
: > java.util.Date...
: > 如果你只是堅持 "sun 並沒有把 Date 整個 deprecated 掉".
: > 那我的回應也只是簡單的 "恩, 你對".
: > 我比較好奇的是...
: > 你打算用剩下的那幾個 method 或 constructor 做什麼?...

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.33.253
a***@kkcity.com.tw
2006-07-10 02:33:17 UTC
Permalink
Post by ._.
: 請問你是說哪一版JDK?或者哪一個Date? java.util or java.sql?
: 我剛剛看了最新的1.5
: 不論是哪一個Date,都只是幾個method or constructor被deprecated....
java.util.Date...
如果你只是堅持 "sun 並沒有把 Date 整個 deprecated 掉".
那我的回應也只是簡單的 "恩, 你對".
我比較好奇的是...
你打算用剩下的那幾個 method 或 constructor 做什麼?...
Date()? 我現在更偏好用 System.currentTimeMillis()
Date(long date)? Calendar 有 void setTimeInMillis(long millis)
after? Calendar 有 after.
before? Calendar 有 before.
getTime? Calendar 有 getTimeInMillis.
setTime? Calendar 有 setTimeInMillis.
名義上 Date 還在啦. 或許實際上 Calendar 底層也還是 Date.
但是實際上 Date 的功用, 全部都可以被 Calendar 跟 DateFormat 取代掉.
就我個人感覺, 只是 sun 沒有把 2/6 的 constructors,
以及 9/27 的 method 也打上 deprecated 而已...
(扣掉 clone, compareTo, equals, hashCode, toString 只剩 4/27)
我也不會刻意為了一個 long 去 new 一個 Date...
如果你知道 Date 有什麼特別的好處, 也請不吝指教.
這只是你自己搞不錯楚 Date 是作什麼用,
而不是 Date 被 deprecated.

現在的情況是, Date 該用來當 immutable date-time
value 來使用 (可以看到 Date 所有 mutable method
都被 deprecate 了). 原本的 Date manipulation 則被搬到
Calendar 去.

比如, 你程式中的 Customer class 有一個 dateOfBirth
的 field, 你該用 Date 作其 type. 至於這個 Date 要怎
樣從使用者輸入建立, 則是則 Calendar/DateFormat 那堆
東西來做了.

當然, 要是你不明白 Date 的 Immutable 特性有什麼意義
的話, 我再多說也是廢話了.

Alien
--
┌─────◆KKCITY◆─────┐  KKBOX◤歌名╱歌手╱歌詞╱專輯◢搜尋 
│ bbs.kkcity.com.tw │   ★ http://www.kkbox.com.tw ★
└──《From:202.72.0.45 》──┘ 超過60家唱片公司合法授權 音樂盡情下載
--
._.
2006-07-11 21:19:35 UTC
Permalink
※ 引述《***@bbs.wretch.cc (飛)》之銘言:
: > 但也可以純用 Calendar
: > DateFormat 可以 setCalendar(Calendar newCalendar)
: format date關 setCalendar啥事?
: Date date = new Date();
: SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy");
: String dateStr = dateFormatter.format(date);

Calendar cal = Calendar.getInstance();
SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy");
dateFormatter.setCalendar(cal);
String dateStr = dateFormatter.format(dateFormatter.getCalendar().getTime());
-------------------------------------
你說的沒錯, ↑這邊還是 Date...

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.148.49
幾百年沒換暱稱
2006-07-12 08:55:52 UTC
Permalink
Post by ._.
: 請問你是說哪一版JDK?或者哪一個Date? java.util or java.sql?
: 我剛剛看了最新的1.5
: 不論是哪一個Date,都只是幾個method or constructor被deprecated....
java.util.Date...
如果你只是堅持 "sun 並沒有把 Date 整個 deprecated 掉".
那我的回應也只是簡單的 "恩, 你對".
我不用堅持,存在與否,需要與否,不是你我說說就算
多寫一些程式比較實際

很多時候,自己去體會比人家說說更有幫助
Post by ._.
我比較好奇的是...
你打算用剩下的那幾個 method 或 constructor 做什麼?...
Date()? 我現在更偏好用 System.currentTimeMillis()
個人偏好跟到底實不實用是兩回事
我喜歡吃米飯,但是不代表麵條就不應該存在在這世界上
Post by ._.
Date(long date)? Calendar 有 void setTimeInMillis(long millis)
after? Calendar 有 after.
before? Calendar 有 before.
getTime? Calendar 有 getTimeInMillis.
setTime? Calendar 有 setTimeInMillis.
名義上 Date 還在啦. 或許實際上 Calendar 底層也還是 Date.
但是實際上 Date 的功用, 全部都可以被 Calendar 跟 DateFormat 取代掉.
so what?
ArrayList 跟 Vector也可以互換
那是不是其中一個應該整個拔掉消失?
Post by ._.
就我個人感覺, 只是 sun 沒有把 2/6 的 constructors,
以及 9/27 的 method 也打上 deprecated 而已...
(扣掉 clone, compareTo, equals, hashCode, toString 只剩 4/27)
喔,我瞭解你的個人感覺了
Post by ._.
我也不會刻意為了一個 long 去 new 一個 Date...
如果你知道 Date 有什麼特別的好處, 也請不吝指教.
好處?寫程式是為了個人好處?
這是看需求吧?

你如果永遠用不到,當然不需要
也不一定要懂

但如果因為各人喜好就否定其他東西的存在
我不能認同這樣的觀念




--
----------------------------------------------
Yen-Lin Yin
Applications Developer
Some City, Some State
----------------------------------------------
--
☆ [Origin:椰林風情] [From: host-24-225-146-213.patmedi] [Login: **] [Post: **]
幾百年沒換暱稱
2006-07-12 08:51:52 UTC
Permalink
感謝你的解釋

我想,我也不多說了,只要多寫一些用得到日期的程式
就會知道Date到底需不需要

至於程式美醜(有沒有用到deprecated methods),對有些人或許不重要
但Date的存在與否與需要與否,都是不容否定的
Post by a***@kkcity.com.tw
Post by ._.
java.util.Date...
如果你只是堅持 "sun 並沒有把 Date 整個 deprecated 掉".
那我的回應也只是簡單的 "恩, 你對".
.
.
.
.
.
.
Post by a***@kkcity.com.tw
Post by ._.
我比較好奇的是...
你打算用剩下的那幾個 method 或 constructor 做什麼?...
Date()? 我現在更偏好用 System.currentTimeMillis()
Date(long date)? Calendar 有 void setTimeInMillis(long millis)
after? Calendar 有 after.
before? Calendar 有 before.
getTime? Calendar 有 getTimeInMillis.
setTime? Calendar 有 setTimeInMillis.
名義上 Date 還在啦. 或許實際上 Calendar 底層也還是 Date.
但是實際上 Date 的功用, 全部都可以被 Calendar 跟 DateFormat 取代掉.
就我個人感覺, 只是 sun 沒有把 2/6 的 constructors,
以及 9/27 的 method 也打上 deprecated 而已...
(扣掉 clone, compareTo, equals, hashCode, toString 只剩 4/27)
我也不會刻意為了一個 long 去 new 一個 Date...
如果你知道 Date 有什麼特別的好處, 也請不吝指教.
這只是你自己搞不錯楚 Date 是作什麼用,
而不是 Date 被 deprecated.
現在的情況是, Date 該用來當 immutable date-time
value 來使用 (可以看到 Date 所有 mutable method
都被 deprecate 了). 原本的 Date manipulation 則被搬到
Calendar 去.
比如, 你程式中的 Customer class 有一個 dateOfBirth
的 field, 你該用 Date 作其 type. 至於這個 Date 要怎
樣從使用者輸入建立, 則是則 Calendar/DateFormat 那堆
東西來做了.
當然, 要是你不明白 Date 的 Immutable 特性有什麼意義
的話, 我再多說也是廢話了.
Alien
--
----------------------------------------------
Yen-Lin Yin
Applications Developer
Some City, Some State
----------------------------------------------
--
☆ [Origin:椰林風情] [From: host-24-225-146-213.patmedi] [Login: **] [Post: **]
._.
2006-07-12 10:13:46 UTC
Permalink
首先, 我回這篇, 我只是要講三件事情.

第一件事情, 為什麼我不能問"為什麼"?

第二件事情, 為什麼我不能要求"好處"?

基本上, 為什麼有時候問當然會被罵,

舉例來說, 作業文就屬於會被罵的範疇之一.

但是當所有事情都可以 "你回去多寫一點程式就會知道" 做回應,

要求對方回去閉門造車狂寫猛寫, 那我們還需要討論區幹什麼?

加上每個人對於事物的觀點都不一樣,

我們充其量只能去模擬說其他人怎樣想.

但事實上是不是這麼想, 那只有天知道.

對於別人而言的好處, 可能對我而言, 我看不到好在哪邊.

問別人"為什麼"你覺得他好, 是件不對的事情嘛?

像 feicsh. 提及 JDBC 等等論點, 對我來說就屬於我不甚關切的事情.

以我之前接觸到的東西, 存在資料庫裡面的東西, 先後順序跟時間間隔比較重要.

我甚至不用 Date 去存它, 因為我只需要數值上的索引及差異, long 夠用了.

至於好處, 為什麼我們不要好處?

建置的方便性, 效能, 空間使用, 程式的穩定, 維護...etc

你會講需求, 你就會知道所有的事情都是兩面刃,

都要拿什麼東西去換什麼東西.

所以軟工沒有在說對錯, 只是之後你能享受什麼好處, 而什麼東西會砸你的腳.

╮( ̄ ̄)╭

其他類比舉例我就不想講了. 已經要收尾了還趕盡殺絕不厚道.

前面兩點說完了, 回到我在這個討論串一直在問的問題,

第三點, Date 到底哪裡好?

feicsh. 至少提到兩點我之前沒有注意過的地方, 我很感激他.

adrianshum. 提到 immutable date-time, 對我來說也很新鮮.

本來如果沒有人亂入的話, 我就打算 m 起來表達我誠摯的敬意...

(不過有人手腳比我快... (瞪))

既然有人來了, 如果 inn. 願意畫個完美的句點, 那就請吧.

辯論本來就是正方反方彼此交相探討事物真正價值, 如此而已.

※ 引述《***@bbs.ntu.edu.tw (幾百年沒換暱稱)》之銘言:
: ==> ***@ptt.cc (._.) 提到:
: > java.util.Date...
: > 如果你只是堅持 "sun 並沒有把 Date 整個 deprecated 掉".
: > 那我的回應也只是簡單的 "恩, 你對".
: 我不用堅持,存在與否,需要與否,不是你我說說就算
: 多寫一些程式比較實際
: 很多時候,自己去體會比人家說說更有幫助
: > 我比較好奇的是...
: > 你打算用剩下的那幾個 method 或 constructor 做什麼?...
: > Date()? 我現在更偏好用 System.currentTimeMillis()
: 個人偏好跟到底實不實用是兩回事
: 我喜歡吃米飯,但是不代表麵條就不應該存在在這世界上
: > Date(long date)? Calendar 有 void setTimeInMillis(long millis)
: > after? Calendar 有 after.
: > before? Calendar 有 before.
: > getTime? Calendar 有 getTimeInMillis.
: > setTime? Calendar 有 setTimeInMillis.
: > 名義上 Date 還在啦. 或許實際上 Calendar 底層也還是 Date.
: > 但是實際上 Date 的功用, 全部都可以被 Calendar 跟 DateFormat 取代掉.
: so what?
: ArrayList 跟 Vector也可以互換
: 那是不是其中一個應該整個拔掉消失?
: > 就我個人感覺, 只是 sun 沒有把 2/6 的 constructors,
: > 以及 9/27 的 method 也打上 deprecated 而已...
: > (扣掉 clone, compareTo, equals, hashCode, toString 只剩 4/27)
: 喔,我瞭解你的個人感覺了
: > 我也不會刻意為了一個 long 去 new 一個 Date...
: > 如果你知道 Date 有什麼特別的好處, 也請不吝指教.
: 好處?寫程式是為了個人好處?
: 這是看需求吧?
: 你如果永遠用不到,當然不需要
: 也不一定要懂
: 但如果因為各人喜好就否定其他東西的存在
: 我不能認同這樣的觀念

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.148.49
wctang
2006-07-12 20:55:34 UTC
Permalink
凡出現"要是你連xxx都不知道,那就沒什麼好說的了"這種句型,大家大概就不能心平氣
和了吧。

這是我以前寫的一篇文字:
http://wctang.info/blog/2005-04-19_Programming

Calendar 和 DateFormat 在 jdk1.1 就出現了,所以這個問題也 lag 很久了,如果
Date 是沒用的,那留了這麼久也很奇怪。以我的想法,Date 的出現是名正言順,java
畢竟不是 C ,用 long 來表示時間反而覺得奇怪,而且在 api 設計上也會出現問題
(ex serialize) ,但有時的確用 long 來表示是好的,像是在 jni 的 api 設計上,
用 long 來表示時間就會方便許多。


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.154.10
大口小口吃炒飯
2006-07-12 22:56:40 UTC
Permalink
: so what?
: ArrayList 跟 Vector也可以互換
: 那是不是其中一個應該整個拔掉消失?

其實並不能互換的,

ArrayList沒有同步化的機制,Vector有同步化的機制

不需要同步化機制就用ArrayList,可以提升效率

所以實際上,各有所需之處,也不能互換

---
只是剛好看到提出來而已,不要戰我 (怕)

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.86.100.65
a***@kkcity.com.tw
2006-07-13 11:02:20 UTC
Permalink
Post by ._.
: so what?
: ArrayList 跟 Vector也可以互換
: 那是不是其中一個應該整個拔掉消失?
其實並不能互換的,
ArrayList沒有同步化的機制,Vector有同步化的機制
不需要同步化機制就用ArrayList,可以提升效率
所以實際上,各有所需之處,也不能互換
---
只是剛好看到提出來而已,不要戰我 (怕)
其實 Vector 是該被拔掉的...

因為 Sun 現在建議是用 Collections.synchronizedList(new ArrayList())
來達成 synchronized list

Alien
--
┌─────◆KKCITY◆─────┐▇─┐ 優質連線服務隆/重/豋/場!!
│ bbs.kkcity.com.tw │┴  └─▇  KKADSL 帶你環遊全世界
└──《From:202.72.0.45 》──┘ KKADSL ┴ http://adsl.kkcity.com.tw
--
a***@kkcity.com.tw
2006-07-13 11:11:10 UTC
Permalink
Post by wctang
凡出現"要是你連xxx都不知道,那就沒什麼好說的了"這種句型,大家大概就不能心平氣
和了吧。
我想我那句說得有點衝了. 因為看到前一篇
那種一味把 date 否定而不是討論 Date 的存
在意義, 所以覺得有點不爽. (雖然我自問也
把我的討論重點提了出來了 :P )

在這裡道個歉.
Post by wctang
http://wctang.info/blog/2005-04-19_Programming
Calendar 和 DateFormat 在 jdk1.1 就出現了,所以這個問題也 lag 很久了,如果
Date 是沒用的,那留了這麼久也很奇怪。以我的想法,Date 的出現是名正言順,java
畢竟不是 C ,用 long 來表示時間反而覺得奇怪,而且在 api 設計上也會出現問題
(ex serialize) ,但有時的確用 long 來表示是好的,像是在 jni 的 api 設計上,
用 long 來表示時間就會方便許多。
我這裡看到感覺有點怪怪的.

所謂 jni 的 api 指的是...?
一般來說, 用 jni, 大概你不會直接把 java 的 api
就直接拿來用. 通常會是自己再把 java 寫的東西再
包一層 native 的 "interface" 來提供 api.

這個 wrapper 以 long 來代表 date 是沒有問題 (wrapper
就該以包的 language 的慣例來做). 但 java 本身
該也仍然以 Date 來代表 date/time.

前者 (wrapper) 我不覺得該叫 jni 的 api, 那只是 native
的 api 而已, 後者也不該用 long 代表時間.

Alien
--
┌─────◆KKCITY◆─────┐KKMAN團隊  全新力作 ◎◎KKBOX◎◎
│ bbs.kkcity.com.tw │知名歌手通通都有  所有新歌想聽就聽
└──《From:202.72.0.45 》──┘※※ 內容豐富多元的線上音樂台 ※※
--
幾百年沒換暱稱
2006-07-15 23:00:37 UTC
Permalink
Post by a***@kkcity.com.tw
Post by 大口小口吃炒飯
其實並不能互換的,
ArrayList沒有同步化的機制,Vector有同步化的機制
不需要同步化機制就用ArrayList,可以提升效率
所以實際上,各有所需之處,也不能互換
---
只是剛好看到提出來而已,不要戰我 (怕)
別這麼說
我不會想隨便戰人

我提到vector arraylist可以互換
是想要解釋為啥我覺得Date有需要

就我個人經驗而言
date timestamp都有需要
就像我認為
vector arraylist都有需要一樣

我個人以為 可不可以被取代跟該不該消失是兩回事
最後,當然可以互換
把arraylist synchronize起來就可以了(如下面的例子)
Post by a***@kkcity.com.tw
其實 Vector 是該被拔掉的...
因為 Sun 現在建議是用 Collections.synchronizedList(new ArrayList())
來達成 synchronized list
我只有在arraylist那邊看到SUN建議當使用arraylist而且需要注意synchronization
時候這樣用,

並沒有看到SUN建議不要用vector

http://www.javaworld.com/javaworld/javaqa/2001-06/03-qa-0622-vector.html

這篇文章是我看到的對兩者的一些說明
Post by a***@kkcity.com.tw
Alien
其實我都是看需求
有些時候用arraylist因為只會讀,不會寫

有synchronization考量的時候,再用vector

會這樣是因為arraylist沒有synchrinization機制,速度比較快

此外,在現在許多n-tier應用上,用interface來傳遞物件會比較自由
從callee回傳到caller傳的是interface
callee
public Collection funcA()
{
Vector v....
..

return v;
}



而caller得到回傳物件後,自己再決定如何使用

public void funcB()
{
Collection c = funcA();
這裡就隨便你怎麼使用這個c
你可以轉成Vector,也可以變成ArrayList

}


這樣兩邊的programmer都有比較多的彈性

--
----------------------------------------------
Yen-Lin Yin
Applications Developer
Some City, Some State
----------------------------------------------
--
☆ [Origin:椰林風情] [From: host-24-225-146-213.patmedi] [Login: **] [Post: **]
幾百年沒換暱稱
2006-07-15 23:11:29 UTC
Permalink
Post by ._.
首先, 我回這篇, 我只是要講三件事情.
第一件事情, 為什麼我不能問"為什麼"?
第二件事情, 為什麼我不能要求"好處"?
基本上, 為什麼有時候問當然會被罵,
舉例來說, 作業文就屬於會被罵的範疇之一.
但是當所有事情都可以 "你回去多寫一點程式就會知道" 做回應,
要求對方回去閉門造車狂寫猛寫, 那我們還需要討論區幹什麼?
加上每個人對於事物的觀點都不一樣,
我們充其量只能去模擬說其他人怎樣想.
但事實上是不是這麼想, 那只有天知道.
對於別人而言的好處, 可能對我而言, 我看不到好在哪邊.
問別人"為什麼"你覺得他好, 是件不對的事情嘛?
像 feicsh. 提及 JDBC 等等論點, 對我來說就屬於我不甚關切的事情.
以我之前接觸到的東西, 存在資料庫裡面的東西, 先後順序跟時間間隔比較重要.
我甚至不用 Date 去存它, 因為我只需要數值上的索引及差異, long 夠用了.
至於好處, 為什麼我們不要好處?
建置的方便性, 效能, 空間使用, 程式的穩定, 維護...etc
你會講需求, 你就會知道所有的事情都是兩面刃,
都要拿什麼東西去換什麼東西.
所以軟工沒有在說對錯, 只是之後你能享受什麼好處, 而什麼東西會砸你的腳.
我完全同意你的想法
那,又為什麼你認為Date應該完全消失?

他會砸你的腳,不代表會砸人家的腳!不是嗎?
Post by ._.
╮( ̄ ̄)╭
其他類比舉例我就不想講了. 已經要收尾了還趕盡殺絕不厚道.
前面兩點說完了, 回到我在這個討論串一直在問的問題,
第三點, Date 到底哪裡好?
套用你講的話
每個人對於事物的觀點都不一樣,

那你為什麼覺得Date應該要消失?
Post by ._.
feicsh. 至少提到兩點我之前沒有注意過的地方, 我很感激他.
adrianshum. 提到 immutable date-time, 對我來說也很新鮮.
本來如果沒有人亂入的話, 我就打算 m 起來表達我誠摯的敬意...
(不過有人手腳比我快... (瞪))
不好意思,如果你這麼介意我的文章,可以砍掉
Post by ._.
既然有人來了, 如果 inn. 願意畫個完美的句點, 那就請吧.
話什麼句點?

如果你是說Date的話,
我的結論是因為用的到
不一定是你,別人會用的到
我也用的到

就像你說的
你只需要數值上的索引及差異, long 夠用了

但是我喜歡存Date
所以我把long 轉成Date(long)
我在意的是你說Date整個deprecate掉,
但是事實上並沒有

我個人不喜歡用deprecated method
所以我不會去用Date(int year, int month, int date, int hrs, int min, int sec)

但是對我而言,Date很方便
也就很實用

軟工很重要一點Keep it simple and stupid
Date 夠simple也很stupid


最後,如果你想趕盡殺絕不厚道,我一點也不介意

因為我日子還是要過,班還是要上Date還是照用

如果你想瞪我因為我破壞你M文章的雅興..就把我的砍掉吧
Post by ._.
辯論本來就是正方反方彼此交相探討事物真正價值, 如此而已.
: 我不用堅持,存在與否,需要與否,不是你我說說就算
: 多寫一些程式比較實際
: 很多時候,自己去體會比人家說說更有幫助
: 個人偏好跟到底實不實用是兩回事
: 我喜歡吃米飯,但是不代表麵條就不應該存在在這世界上
: so what?
: ArrayList 跟 Vector也可以互換
: 那是不是其中一個應該整個拔掉消失?
: 喔,我瞭解你的個人感覺了
: 好處?寫程式是為了個人好處?
: 這是看需求吧?
: 你如果永遠用不到,當然不需要
: 也不一定要懂
: 但如果因為各人喜好就否定其他東西的存在
: 我不能認同這樣的觀念
--
----------------------------------------------
Yen-Lin Yin
Applications Developer
Some City, Some State
----------------------------------------------
--
☆ [Origin:椰林風情] [From: host-24-225-146-213.patmedi] [Login: **] [Post: **]
wctang
2006-07-17 02:30:47 UTC
Permalink
※ 引述《***@kkcity.com.tw ( )》之銘言:
: ※ 引述《***@ptt.cc (wctang)》之銘言:
: > http://wctang.info/blog/2005-04-19_Programming
: > Calendar 和 DateFormat 在 jdk1.1 就出現了,所以這個問題也 lag 很久了,如果
: > Date 是沒用的,那留了這麼久也很奇怪。以我的想法,Date 的出現是名正言順,java
: > 畢竟不是 C ,用 long 來表示時間反而覺得奇怪,而且在 api 設計上也會出現問題
: > (ex serialize) ,但有時的確用 long 來表示是好的,像是在 jni 的 api 設計上,
: > 用 long 來表示時間就會方便許多。
: 我這裡看到感覺有點怪怪的.
: 所謂 jni 的 api 指的是...?
: 一般來說, 用 jni, 大概你不會直接把 java 的 api
: 就直接拿來用. 通常會是自己再把 java 寫的東西再
: 包一層 native 的 "interface" 來提供 api.
: 這個 wrapper 以 long 來代表 date 是沒有問題 (wrapper
: 就該以包的 language 的慣例來做). 但 java 本身
: 該也仍然以 Date 來代表 date/time.
: 前者 (wrapper) 我不覺得該叫 jni 的 api, 那只是 native
: 的 api 而已, 後者也不該用 long 代表時間.
: Alien

我會把 jni 提出來可能是因為之前的經驗讓我想例子的時候就先想到這個例子。
曾經看過在 jni 介面中也用到一堆 java 物件,使得 c 的那端必需處理一堆從
java 來的物件,會這麼做的原因我想應該是原本 java 已經設計的很複雜的物件
體系,並不是很容易將原本的傳遞的 java 物件都轉化為 c 的基本類型,所以會
用到 jni 中比較少被用到的功能。或許這個例子舉得不好吧 :)

其實 java 中的 wrapper class 有好多,像 Integer, Boolean, Byte ,那除了在
使用其中的 utility function 外,大家覺得還有什麼情況會用到這些 class 呢?
(例如,在什麼情況下會用這些 class 做為參數而不是用 primitive type 呢?)

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.154.10
._.
2006-07-17 03:02:21 UTC
Permalink
※ 引述《wctang (wctang)》之銘言:
: (例如,在什麼情況下會用這些 class 做為參數而不是用 primitive type 呢?)

(直覺反應) 當我要填 Collections < > 裡面的東西的時候...

例如說 HashMap<Integer, String> , 而非 HashMap<int, String>

因為裡面必須放物件, 詳細的原因我沒有去查過就是了.

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.148.49
._.
2006-07-17 03:48:42 UTC
Permalink
※ 引述《***@bbs.ntu.edu.tw (幾百年沒換暱稱)》之銘言:
(諒刪)
: 那你為什麼覺得Date雩茩n消失?
^^^^^
我剛很認真的回去看了一下. 我的確沒有用"消失"這個詞.


既然你重複問了兩次, 我還是回應一下好了,

我還不成熟到通盤了解 Date 的存在價值.

我想你也發現到了, 透過這樣方式,

可以了解到在一些方面上對 Date 的需求.

: 不好意思,如果你這麼介意我的文章,可以砍掉

所以, 你到底發過什麼值得令我介意的文章?

就算因為這篇因為看來時間很趕,

有一些奇奇怪怪呈現的地方,

我也不會介意.

當然, 標一下是我的習慣了.

之前我也不是沒幹過只回一個 ^ 的事情...

: 話什麼句點?
^^
看來是沒得畫了, 意外的韌命...

: 我在意的是你說Date整個deprecate掉,
: 但是事實上並沒有

我明瞭你的目的了. 根據我之前回過的. 以下是我的回應.

"嗯, 你對"

(這個我不是很早就說過了嘛...)

: Date 夠simple]很stupid
^

: 因為我日子還是要過,班還是要上Date還是照用
^^

: 如果你想瞪我因為我破壞你M文章的雅興..就把我的砍掉吧

我哪裡瞪你了?...

任何一個版主都不因為因為有任何人挑釁類似 "把我的文砍掉吧"
就去把那個人的文串全部砍光.

但是如果是事出有因的要求的話, 那的確是該去照章辦理.

也沒有哪個版主是無聊到為了 m 文章才來管版的.
..
應該吧.
..
有的話舉手一下, 我蠻好奇會不會真的有這種人.

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.148.49
a***@kkcity.com.tw
2006-07-19 03:28:42 UTC
Permalink
Post by 幾百年沒換暱稱
別這麼說
我不會想隨便戰人
我提到vector arraylist可以互換
是想要解釋為啥我覺得Date有需要
就我個人經驗而言
date timestamp都有需要
就像我認為
vector arraylist都有需要一樣
我個人以為 可不可以被取代跟該不該消失是兩回事
最後,當然可以互換
把arraylist synchronize起來就可以了(如下面的例子)
建議你找找網上的資料.

其實自 Collection 出現後, synchronized list 早該轉
用 synchronized wrapper 來 wrap 著 List implementations.

Vector 和 Hashtable 還留著主要是為了 backward compatibility
Post by 幾百年沒換暱稱
Post by a***@kkcity.com.tw
其實 Vector 是該被拔掉的...
因為 Sun 現在建議是用 Collections.synchronizedList(new ArrayList())
來達成 synchronized list
我只有在arraylist那邊看到SUN建議當使用arraylist而且需要注意synchronization
時候這樣用,
並沒有看到SUN建議不要用vector
http://www.javaworld.com/javaworld/javaqa/2001-06/03-qa-0622-vector.html
這篇文章是我看到的對兩者的一些說明
Post by a***@kkcity.com.tw
Alien
其實我都是看需求
有些時候用arraylist因為只會讀,不會寫
有synchronization考量的時候,再用vector
會這樣是因為arraylist沒有synchrinization機制,速度比較快
此外,在現在許多n-tier應用上,用interface來傳遞物件會比較自由
從callee回傳到caller傳的是interface
面對 interface 來工作是一回事.
Vector 有沒有用又是另一回事了.

要 synchronized ArrayList, 我上面就給了
方法. Vector 倒是除了 for backward compatibility 沒
有什麼價值了. 用 Vector 反而會令修改變得麻煩:
1) 不慎用了 legacy 的 Vector methods,
到時轉用別的 List implementation 就不行
2) 就算是為了 synchronization, 用 syncrhonized
List wrapper 也能讓你更簡單轉用別的 List implementation.

或者唯一的好處是 Vector 比 用wrapper 少了一層
method invocation. 但這種好處有多大呢?
Post by 幾百年沒換暱稱
callee
public Collection funcA()
{
Vector v....
...
return v;
}
而caller得到回傳物件後,自己再決定如何使用
public void funcB()
{
Collection c = funcA();
這裡就隨便你怎麼使用這個c
你可以轉成Vector,也可以變成ArrayList
要轉成 Vector 或 ArrayList 就代表你用錯了
Post by 幾百年沒換暱稱
}
這樣兩邊的programmer都有比較多的彈性
明顯你的例子是 error-prone 而不是 flexible :P


alien
--
┌─────◆KKCITY◆─────┐KKMAN團隊  全新力作 ◎◎KKBOX◎◎
│ bbs.kkcity.com.tw │知名歌手通通都有  所有新歌想聽就聽
└──《From:202.72.0.45 》──┘※※ 內容豐富多元的線上音樂台 ※※
--

Loading...