/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
List
< Specific
> specificList
= Arrays .
asList ( new Specific
( ) ,
new Specific
( ) ) ; Map
< Integer ,
? extends Abstract
> abstractMap
= new HashMap
<> ( ) ;
specificList.forEach ( device -> abstractMap.put ( device.getIdentity ( ) , device) ) ;
}
}
class Abstract {
Abstract ( ) {
identity = rand.nextInt ( 9000 ) ;
}
return identity;
}
}
class Specific extends Abstract { }
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCUxpc3Q8U3BlY2lmaWM+IHNwZWNpZmljTGlzdCA9IEFycmF5cy5hc0xpc3QobmV3IFNwZWNpZmljKCksIG5ldyBTcGVjaWZpYygpKTsKICAgICAgICBNYXA8SW50ZWdlciwgPyBleHRlbmRzIEFic3RyYWN0PiBhYnN0cmFjdE1hcCA9IG5ldyBIYXNoTWFwPD4oKTsKICAgICAgICAKICAgICAgICBzcGVjaWZpY0xpc3QuZm9yRWFjaChkZXZpY2UgLT4gYWJzdHJhY3RNYXAucHV0KGRldmljZS5nZXRJZGVudGl0eSgpLCBkZXZpY2UpKTsKCX0KfQoKY2xhc3MgQWJzdHJhY3QgeyAKCUludGVnZXIgaWRlbnRpdHk7IAoJCglBYnN0cmFjdCgpIHsKCQlSYW5kb20gcmFuZCA9IG5ldyBSYW5kb20oKTsgCgkJaWRlbnRpdHkgPSByYW5kLm5leHRJbnQoOTAwMCk7Cgl9CgkKCXB1YmxpYyBJbnRlZ2VyIGdldElkZW50aXR5KCkgewoJCXJldHVybiBpZGVudGl0eTsKCX0KfQoKY2xhc3MgU3BlY2lmaWMgZXh0ZW5kcyBBYnN0cmFjdCB7IH0=
compilation info
Main.java:15: error: incompatible types: Specific cannot be converted to CAP#1
specificList.forEach(device -> abstractMap.put(device.getIdentity(), device));
^
where CAP#1 is a fresh type-variable:
CAP#1 extends Abstract from capture of ? extends Abstract
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
1 error
stdout