我有一个常用的接口(我不想让它泛型),它带有泛型方法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
接口通用吗?我试图避免手动弄乱 Object 和 casts 并将所有类型的不同属性存储在一个列表中。
(使用静态只是在一个文件中编译测试样本 - 它不会改变任何东西)
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);
}
}