- - PR -
もうお試しになられましたか? J2SE 1.5.0 Tiger
投票結果総投票数:172 | |||
---|---|---|---|
試した | 58票 | 33.72% | |
まだ | 114票 | 66.28% | |
|
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-22 18:49
どうも、Wataです。
さくらばさんが書き込みしたら盛り上がり始めました。 言語仕様以外にもいろいろありますよね。 個人的には、Swingでポップアップメニューが簡単に使えるようになったことが気に入ってます。JComponent#setPopupMenu(JPopupMenu) あとこの会議室でも話題にあったと思うけど、javaの最前面ウィンドウができるようになったみたいです。
scanfはjava.util.Scannerですよね。 printfはjava.text.MessageFormat.format()ですか? 個人的にはjava.io.PrintWriterにprint(String pattern, Object... arguments)なんてのも追加されると思っていたのですが...。まぁ、たいした手間じゃないですね。
values()という配列を返すメソッドに替わった模様です。 # かぶってしまいました しかし、Java in the Box はいつも情報が早くて参考になります。 [ メッセージ編集済み 編集者: Wata 編集日時 2004-01-22 18:54 ] | ||||||||||||
|
投稿日時: 2004-01-23 04:29
こんにちは、さくらばです。
Generics の Early Access 版は J2SE 1.3 などでもそのまま動いたのですが、 残念ながら J2SE 1.5 アルファのクラスファイルだと J2SE 1.4 以降でない と動作しません。 そのまま実行してしまうとUnsupportClassVersionError が発生して しまいます。 次のように書けば J2SE 1.2 でも動作するようです。 javac -source 1.5 -target 1.2 XXXXXXX.java [ メッセージ編集済み 編集者: さくらば 編集日時 2004-01-23 04:59 ] | ||||||||||||
|
投稿日時: 2004-01-23 09:17
unibon です。こんにちわ。
ukさん、さくらばさん、ありがとうございます。 互換性を保てるとは知りませんでした。 ただ、(以下は質問と言うわけではありませんが)、 Generics で使う型の情報をクラスファイルのどこにどうやって、 互換性を保ったまま保存しているのだろう、 という疑問があります。 もしかしたら、ソースコードAをコンパイルする際に、 ソースコードAが依存しているソースコードBが必要、 とかそういうことはないですよね。 #踏ん切りがついたので、自分で使ってみて調べてみます。 | ||||||||||||
|
投稿日時: 2004-01-23 11:45
型チェックはコンパイル時だけ必要なので、バイトコードに残す必要はありません。 だから1.5のコレクションクラスのコード自体は基本的に変わっていないと思います。 | ||||||||||||
|
投稿日時: 2004-01-23 12:35
私も、バイトコードには型パラメータの情報はないと最初は思ったのですが、 バイトコード内にその情報が無いとすると、コンパイル時にも利用できませんよね。 ちなみに以下のコードを
annotationもそうですけど、バイトコードには拡張データを積める仕様があるのですかね? | ||||||||||||
|
投稿日時: 2004-01-23 12:56
書き込みにあるコードだと同一ソース内ですから型チェックはコンパイラの拡張のみで可能ですよね。 ただし別クラスでクラスファイルのみの場合だと、やはり型情報は必要ですね… バイトコード内の型定義はやはり拡張されていると考えたほうがいいのでしょうね。 #時間があれば仕様も当たってみます | ||||||||||||
|
投稿日時: 2004-01-23 13:12
| ||||||||||||
|
投稿日時: 2004-01-23 13:56
こんにちは、さくらばです。
JSR-14 の仕様書を読んでみると、Backward Compatibility を保ちながら Generics を扱えるように、 シグニチャを変更したと書いてあります。普通は ArrayList であれば Ljava/util/ArrayList; と記述されますが、ArrayList<String> は Ljava/util/ArrayList<Ljava/lang/String;>; と なっています。 ついでに ArrayList<? extends T> は Ljava/util/ArrayList<+T;>; ArrayList<? super T> は Ljava/util/ArrayList<-T;>; のようです。 # javap -s でシグネチャ出力させても Ljava/util/ArrayList; としか出力されませんが JSR-14 http://jcp.org/en/jsr/detail?id=14 |