Ema*_*rsa 20 java generics compiler-errors
JAVA由于接口,我实现了以下方法:
public String importDocument(ImportSource source, Map<String, ? extends Object> paramMap);
Run Code Online (Sandbox Code Playgroud)
当我尝试做以下时,我收到编译警告.片段:
paramMap.put("Key", "Value");
Run Code Online (Sandbox Code Playgroud)
错误:
方法put(String,capture#1-of?extends Object)在Map类型中不适用于参数(String,String)
为什么?
Ani*_*kur 22
? extends Object
Run Code Online (Sandbox Code Playgroud)
您正在使用通用通配符.您无法执行添加操作,因为类类型不是确定的.你不能添加/放置任何东西(除了null).
有关使用通配符的更多详细信息,请参阅oracle docs.
Collection<?> c = new ArrayList<String>();
c.add(new Object()); // Compile time error
Run Code Online (Sandbox Code Playgroud)
由于我们不知道c的元素类型代表什么,我们无法向其添加对象.该add()方法接受type E集合的元素类型的参数.当实际的类型参数是?,它代表一些unknown type.我们传递给add的任何参数都必须是这种未知类型的子类型.既然我们不知道那是什么类型,我们就无法传递任何东西The sole exception is null, which is a member of every type.