Notes on implementing concise calls to constructors with type parameters

Rémi Forax forax at univ-mlv.fr
Thu May 14 16:41:48 PDT 2009


Alex Buckley a écrit :
> Ulf, you ask why:
>
>    Cell<String> cs = new Cell(1); //unchecked warning
>    String s = cs.x; //CCE at runtime
>
> cannot be rejected at compile-time, presumably with an error rather than 
> a warning on the assignment.
>
> The answer is migration compatibility: it is desirable for new, 
> generified code (Cell<String> cs = ...) to be able to call legacy, 
> ungenerified code (that returns a raw Cell type).
>
> There is a potential CCE resulting from this call - as indeed there is 
> anytime raw types are used by generified code - so the language requires 
> a compile-time WARNING when this migration feature is used.
>
> There is no conceivable "upgrade" to this behavior in the JLS.
>   
Re-read section 4.8 of the JLS :)
*"It is possible that future versions of the Java programming language 
will disallow the use of raw types."
*
So it's seems that someone, one day conceive that.

and with javac
javac -Xlint:raw -Werror ...
> For the record, this is nothing to do with erasure/reification.
>
> Alex
>   
Rémi



More information about the coin-dev mailing list