Get
私は、ジェネリックメソッドとそれを実装するジェネリッククラス を備えた通常のインターフェイス(ジェネリックにしたくない)を持っています。
@Overrideは警告を表示せず、コードは意図したとおりに機能しますが、Foo#Get()に警告があります:
Type safety: The return type T for Get() from the type Test.Foo<T> needs unchecked conversion to conform to TT from the type Test.Attribute
Attribute
インターフェイスも汎用にする必要がありますか?オブジェクトとキャストを手動でいじるのを避け、すべてのタイプの異なる属性をリストに保存しようとしています。
(静的を使用してテストサンプルを1つのファイルにコンパイルするだけで、何も変更されません)
import java.util.ArrayList;
import java.util.List;
public class Test
{
static interface Attribute
{
<TT> TT Get();
}
static class Foo<T> implements Attribute
{
T val;
public Foo(T val)
{
this.val = val;
}
@Override
public T Get()
{
System.out.println("it is me");
return val;
}
}
public static void main(String[] args)
{
List<Attribute> list = new ArrayList<Attribute>();
list.add(new Foo<String>("test"));
String s = list.get(0).Get();
System.out.println(s);
}
}