【发布时间】:2009-03-19 13:27:25
【问题描述】:
在这个简化的示例中,我有一个泛型类和一个无论类型参数如何都返回 Map 的方法。为什么当我没有在包含的类上指定类型时,编译器会清除映射上的类型?
import java.util.Map;
public class MyClass<T>
{
public Map<String, String> getMap()
{
return null;
}
public void test()
{
MyClass<Object> success = new MyClass<Object>();
String s = success.getMap().get("");
MyClass unchecked = new MyClass();
Map<String, String> map = unchecked.getMap(); // Unchecked warning, why?
String s2 = map.get("");
MyClass fail = new MyClass();
String s3 = fail.getMap().get(""); // Compiler error, why?
}
}
我得到这个编译器错误。
MyClass.java:20: incompatible types
found : java.lang.Object
required: java.lang.String
String s3 = fail.getMap().get(""); // Compiler error
【问题讨论】:
-
未经检查的警告的确切文本是什么?
-
警告:[unchecked] 未经检查的转换