2017-05-02 17 views
-4

ジェネリックスは、実行時にタイプを削除するために型消去を使用します。これはJavaでパラメトリック多態性を実装する方法ですが、型の削除のためにコンパイルされませんでした。任意の提案をいただければ幸いです:)例えばタイプ消去のためにコンパイルされないJavaコードの例を与える

+0

'public void type(){}'型の消去で、これはコンパイルされません。 – CraigR8806

+2

コンパイラがソースコード内の文字列 "type"のすべてのインスタンスを削除する理由を理解するのは難しいですが、しかし、すべての深刻さにおいて、私たちはコーディングサービスでもなく、宿題作成者でもありません。 – CraigR8806

答えて

1

この:

public void method(Object o) { 
    ... 
} 

public <T> void method(T t) { 
    ... 
} 

Tの消去は、メソッドのシグネチャが同じなってしまうObjectで、あなたが同じの複数のメソッドを持つことはできませんので署名。これはエラーでコンパイルが失敗します。

error: name clash: <T>method(T) and method(Object) have the same erasure 
    public <T> void method(T t) { 
        ^
    where T is a type-variable: 
    T extends Object declared in method <T>method(T) 
1 error 
1

Tがジェネリック型であるT[] arrayような一般的な配列を作成してみてください。

+0

まだ - これは宿題ではありませんエクスチェンジプラットフォーム – goerlibe

関連する問題