java apiは同じ名前の複数のジェネリックと非ジェネリックを定義しています(LinkedList
など)。同じステートメントimport java.util.LinkedList;
を使用して解決されます。しかし、1つのパッケージでは、(同じ名前の).javaファイルには1つのパブリッククラスしか存在しないことがあります。同じ名前のジェネリックで非ジェネリック
同じ効果が得られますか?コメントがなければ
package org.****.ai.ass1.part1;
import java.util.LinkedList;
public abstract class Test extends LinkedList { }
//public abstract class Test<E> extends LinkedList<E> { }
、私は次のエラーを取得:私は、次のコードを試してみましたThe type Test is already defined
を。しかし、私が他の人にコメントすると、両方の行がコンパイルされます。では、Java APIはどのように機能しますか?
コンパイラの警告に注意を払わないときは、非ジェネリッククラスのようなジェネリッククラスのインスタンスを使うことができます。 – Ralph
@Ralph:それは私には分かりません。これは同じ実装で、同じクラスです。いくつかの制限がありますが、インスタンスを非ジェネリック型からジェネリック型にキャストすることもできます(その逆も可能ですが、わかりません)。 –
thats私が意味すること:ジェネリッククラスは同じです。具体的なジェネリック型に関する情報は、そのインスタンス(インスタンス)を使用するときに「配置」されます。このジェネリック情報を「入れない」場合は、ジェネリッククラスがない場合と同様にジェネリッククラスを使用します。 - とにかく:これはあなたの答えに対する批判ではありませんでした(正しいので) - この質問に関してジェネリックスがどのように機能するかをもう少し説明したいだけです。 – Ralph