◆Java
日付の変換
Date date = DateFormat.getDateInstance().parse(str);
getDateInstance()←Date忘れないでね
Formatを指定して変換
例えば、Tue, 04 Dec 2012 10:01:05 +0900のような形式。
SimpleDateFormat objFormat =
new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
Date date = objFormat.parse(str);
Local.ENGLISHないとフォーマットできないみたい。
参考
あー、超ハマった。
Java SEとかEEとかSDKとかJDSとかJ2SEとかJREとかとか。
Java SEとはStandard Editionの略です。
Javaの基本的な関数が入っています。
APIと呼ばれるものです。
ちなみにJ2SEというのは、
バージョン1.5(5.0)までの昔の呼び方で、
今はJava SEで統一されているみたいです。
J2の後ろの部分がJava SEのSEの部分なので、
J2EEだったら下のJava EEのこと、
J2MEだったらJava MEと呼ばれるAPIのことです。
Java EEとはEnterprise Editionの略です。
JavaでWebサイトなどを作る際に必要な関数が入っています。
Servletとかjspの関数などが含まれています。
web.xmlなどをいじってServletクラスを作ったり、
StrutsやSeasarなどのライブラリを使ったことがなければ
縁のない関数かもしれません。
SDKはSoftware Development Kit(ソフトウェア開発キット)の略です。
Javaに関わらずソフトウェアを開発するのに必要なツールが
一式入ってますよというものです。
なのでJavaだと、上で書いたJava SE(Standard Edition)も入っています。
他にはソースを*.classファイルにコンパイル(翻訳)するツール、
作ったアプリケーションを実行する環境などが入っています。
JDKとはJava Development Kit(Java開発キット)の略です。
Javaを開発するのに必要なツールが一式入ってます。
Java専用のSDKということですね。
内容の構成はSDKと同じで、
標準API(Java SE)
コンパイラ(*.javaのソースファイルを*.classファイルに翻訳するツール)
実行環境
などが入っています。
JDKはJavaの開発に必要な最低限のツール一式なので、
Java EEは入っていません。
もしかしたらアプレットを作るかもしれませんし、
Webではなく端末上で動くアプリケーションを作るかもしれませんからね。
それらは別途インストールしなければなりません。
補足ですが、JDKのバージョンは1.5、1.6、1.7などありますが、
それらは5.0、6.0、7.0とも呼ばれたりします。
まだ2.0まで行ってないので、1が略されてるみたいですね~。ややこしい。
JREとはJava Runtime Environmentの略です。
上のJDKの項目の実行環境の部分です。
例えば、eclipseなどでアプリケーションを実行する時に必要なツールです。
そのままですが。
コーヒーのマークのたまに更新の通知があがるあのツールです。
このJREにもJava SEやJava EEのように種類があり、
公開JREと非公開JREといいます。
JDKの中に入っているJREは、
JREの中でも基本的なものだけ入っている実行環境です。
これが非公開JREです。
ちなみに非公開JREはJDKの一部というイメージなので、
インストールしたりアンインストールしたりできません。
JDKをアンインストールしたら一緒に消えるという感じです。
更新の通知があがるツールは公開JREです。
EnumクラスをStringにすると、変数の内容消える
JavascriptでAjaxでSeasarのActionにアクセスし、
RESULTというEnumを作り、statusとmessageという変数を作成し、
RESULT SUCCESS(0, "成功しました。")のようなのを作って、
返しました。
JavaのEnumの王道の使い方だと思ってたのですが…
ResponseUtil.write(JSON.encode(SUCCESS), "text/javascript");
のようにjavascriptに渡すと、
受け取った時に"SUCCESS"というString型になっていて、
statusもmessageもundefinedになります…。。
くそー、JavaのEnumはどう使えっちゅーんだっ
自前クラスでのequalsはオーバーライドしないとちゃんと動かない
Javaではクラスは全てObjectを自動的に継承しているので、
equals()を使えるんだが、
そのまま使おうとするとパラメーターが全て一致していても
falseが返ってくる。
これはアドレスを見ているからだ。
データが保存されたアドレスはクラスをnewする度に
全く同じインスタンスを比較しないとtrueは返らない。
そこで正しく動作するequals()を実装する為の
システムがeclipseには備わっている。
ソースで右クリック→ソース→hashCode() 及び equals() の生成
これを実行するとhashCode()とequals()が自動生成されて
保持しているパラメータが全て一致していればtrueを返す
equals()が使えるようになる。
ただし、参考演算子を使っていたり、
if (true) return false;
のような括弧を使わないif文などが書かれているので
チェックスタイルに引っかかる場合は
自分で直さなくてはいけない。
最終更新:2013年03月05日 11:34