夜明けのBug -- genericsでオーバーロード

寝ぼけた訳じゃないんですね。。 Messagepack のお話からでた、もしかして、jdk 6 のバグ?
2
Sadayuki Furuhashi @frsyuki

あれ…genericsでオーバーロードってできたっけ…。解決はコンパイル時だからできそうな気はする。

2011-09-18 04:44:00
Muga Nishizawa @muga_nishizawa

@frsyuki その generics の overload するメソッドは、どこのクラスに宣言されるのですか? それと、generics の overload って試した事ないですができます?興味あります。

2011-09-18 04:51:17
Sadayuki Furuhashi @frsyuki

@muga_nishizawa interface Unpacker でオーバーロードします。試したらコンパイル通りました。

2011-09-18 04:51:51
Sadayuki Furuhashi @frsyuki

interface Unpacker で宣言して、abstract class AbstractUnpacker で実装。中身は tryReadNil() て nil でなければ protected String readString() を呼ぶ。

2011-09-18 04:53:39
Muga Nishizawa @muga_nishizawa

@frsyuki おー 知らなかったです。その仕様と実装は良いですね。

2011-09-18 04:54:20
Suguru ARAKAWA @ashigeru

@frsyuki 残念ながら、イレイジャという仕組みで型引数が落ちてread(Class)という扱いになってオーバーロードできないのですよ…

2011-09-18 04:59:01
Muga Nishizawa @muga_nishizawa

@frsyuki コンパイラ何を使ってますか? こっちの純正の jdk1.6.0 だとコンパイル通らない…?

2011-09-18 05:29:24
Sadayuki Furuhashi @frsyuki

@muga_nishizawa Ubuntu 10.04 LTS の Sun JDK 1.6.0_24 でも通りました。

2011-09-18 05:33:26
Sadayuki Furuhashi @frsyuki

確かに実行時には謎のシグニチャのメソッドが呼ばれている気がするな…

2011-09-18 05:34:23
Muga Nishizawa @muga_nishizawa

@frsyuki お騒がせしてごめんなさい。こっちも mvn compile は通ってます。Eclipse の設定か何かの問題だと思います。

2011-09-18 05:34:50
Muga Nishizawa @muga_nishizawa

でも eclipse の java editor がエラー表示してくるのはなぜだろう。Warning 程度にしてもらいたい。

2011-09-18 05:36:44
Suguru ARAKAWA @ashigeru

@frsyuki うーん、それに該当する言語仕様の改編が見つからない…

2011-09-18 05:39:27
きしだൠ(K1S) @kis

@frsyuki WindowsのJDK1.7.0で「have the same erasure」とコンパイルエラーになります

2011-09-18 05:40:28
Sadayuki Furuhashi @frsyuki

逆コンパイルするとどうなるんだろう

2011-09-18 05:40:35
Sadayuki Furuhashi @frsyuki

問題は、ライブラリでこれを使っちゃっても良いのかーという点なのだけども。

2011-09-18 05:41:19
Sadayuki Furuhashi @frsyuki

@kis なんと。JDK 6 のバグ疑惑…?

2011-09-18 05:41:43
Muga Nishizawa @muga_nishizawa

@frsyuki read:(Ljava/lang/Class;)Ljava/lang/String;, read:(Ljava/lang/Class;)Ljava/lang/Long;, read:(Ljava/lang/Class;)Ljava/lang/Object;

2011-09-18 05:42:35
Muga Nishizawa @muga_nishizawa

@frsyuki javap したら return type だけが異なるメソッドが宣言されてた。

2011-09-18 05:43:15
きしだൠ(K1S) @kis

@frsyuki 1.6.0_25ではコンパイルとおりましたw

2011-09-18 05:43:39
Muga Nishizawa @muga_nishizawa

Java generics code compiles with javac, fails with Eclipse Helios: http://t.co/tilIasWm

2011-09-18 05:44:07