[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12139] Re: Generics と Interface で ( 別に パズルという訳ではないのですが ...)



門脇です。

At Wed, 16 Nov 2005 16:24:08 +0900,
"TAKAHASHI, Tomohiro" <t_takahashi@xxxxxxxxxxxxxx> wrote:

>   別にパズルという訳ではないのですが、以下のようにシグネチャが同一の
> メソッドを持つinterfaceを同時にimplementsすると、どうなるのでしょうか? (^^;

コンパイルは通りませんでした。
こんな感じにエラーになります。(クラス名は Untitled1 -> test.Test 
になっています)

test/Test.java:20: 名前が競合しています。test.InfA<java.lang.String> の setData(T) と test.InfB<java.lang.Integer> の setData(T) はまだ他方をオーバーライドしていませんが、削除後の名前が同じです。
public class Test implements InfA<String>, InfB<Integer> {
       ^
エラー 1 個

eclipse だと

Name clash: The method setData(T) of type InfB<T> has the same erasure as setData(T) of type InfA<T> but does not override it.

というエラーメッセージが表示されます。
コンパイル時に、きちんと erasure 処理をした後の結果で、メソッド
のシグネチャをチェックするんですね....
-- 
門脇 太郎# C#なら大丈夫なんですかね?