之间的类型不匹配?Map中的java.Object<;字符串,?gt<==&燃气轮机;map.put(“str”,new Object())
有人可以解释以下错误(来自eclipse IDE): 方法put(字符串、捕获#1-of?) 在类型映射中 不适用于参数 (字符串,对象) 代码第3行收到:之间的类型不匹配?Map中的java.Object<;字符串,?gt<==&燃气轮机;map.put(“str”,new Object()),java,type-conversion,Java,Type Conversion,有人可以解释以下错误(来自eclipse IDE): 方法put(字符串、捕获#1-of?) 在类型映射中 不适用于参数 (字符串,对象) 代码第3行收到: public class MyTest { public void populateUserLoggedIn(Map<String, ?> model){ model.put( "test", new Object() ); } } 公共类MyTest{ 公共void populateUserL
public class MyTest {
public void populateUserLoggedIn(Map<String, ?> model){
model.put( "test", new Object() );
}
}
公共类MyTest{
公共void populateUserLoggedIn(地图模型){
model.put(“test”,newobject());
}
}
模型的值类型未定义,因此编译器无法保证对象类型的值是合适的。模型的值类型未定义,因此,编译器不能保证类型为Object
的值是合适的。?
对于将?
作为参数的方法,与Object
不等价。使用Map
,put
的签名是put(String,?)
。对于?
参数,只能传递null
考虑这一点:
Map<String, Integer> map = new HashMap<String, Integer>();
myTest.populateUserLoggedIn(map);
Integer foo = map.get("test"); // ClassCastException
Map Map=newhashmap();
myTest.populateUserLoggedIn(地图);
整数foo=map.get(“test”);//类卡斯特例外
由于populateUserLoggedIn
采用Map
,因此可以将具有任何类型值的Map传入。。。因此,在方法中,您无法知道哪些类型作为值是合法的,哪些类型不是合法的。因此,您不能添加任何。?
不等同于将?
作为参数的方法的对象。使用Map
,put
的签名是put(String,?)
。对于?
参数,只能传递null
考虑这一点:
Map<String, Integer> map = new HashMap<String, Integer>();
myTest.populateUserLoggedIn(map);
Integer foo = map.get("test"); // ClassCastException
Map Map=newhashmap();
myTest.populateUserLoggedIn(地图);
整数foo=map.get(“test”);//类卡斯特例外
由于populateUserLoggedIn
采用Map
,因此可以将具有任何类型值的Map传入。。。因此,在方法中,您无法知道哪些类型作为值是合法的,哪些类型不是合法的。因此,您不能添加任何内容。您应该阅读以下内容:
作为无界通配符的一个示例,List
表示具有未知值的列表
对象类型。将此列表作为参数的方法可以采用任何类型的列表,
不管参数类型如何。从列表中读取将返回类型为Object
的对象,
不允许将非null元素写入列表,因为参数类型为
不知道
您应该阅读以下内容:
作为无界通配符的一个示例,List
表示具有未知值的列表
对象类型。将此列表作为参数的方法可以采用任何类型的列表,
不管参数类型如何。从列表中读取将返回类型为Object
的对象,
不允许将非null元素写入列表,因为参数类型为
不知道