[
https://issues.jboss.org/browse/CDI-502?page=com.atlassian.jira.plugin.sy...
]
Jozef Hartinger commented on CDI-502:
-------------------------------------
{quote}But assuming that it doesn't exclude wildcard types I think that rule{quote}
An actual type is a type that is not a wildcard nor an unresolved type variable. There is
therefore no rule in 5.2.4 where a wildcard would be considered on the bean type side.
{quote}If I understand correctly "5.2.4. Assignability of raw and parameterized
types" (
http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#assignable_parameters)
indicates that bean type List<Optional<Object>> is assignable to required type
List<Optional<? extends Object>> (which are not assignable to each other in
Java language and wildcards are allowed in required types).{quote}
Correct. Not sure why it is so.
Clarify "contains" meaning in "Legal bean types"
specification.
---------------------------------------------------------------
Key: CDI-502
URL:
https://issues.jboss.org/browse/CDI-502
Project: CDI Specification Issues
Issue Type: Clarification
Components: Beans, Inheritance and Specialization
Reporter: Tomasz Krakowiak
CDI 1.1, section 2.2.1. Legal bean types says:
{quote}
A parameterized type that contains a wildcard type parameter is not a legal bean type.
{quote}
Does it means direct containment or deep/recursive containment?
I understand this is clearly illegal:
{code}
@Produces
List<?> produceList(){
//...
}
{code}
But, are those two bean definitions legal:
{code}
@Produces
List<Optional<?>> produceList(){
//...
}
{code}
{code}
// Bean types: MyList, List<Optional<?>>, Object
// or
// Bean types: MyList, Object
@Dependent
MyList extends List<Optional<?>> {
//...
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)