Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java inference : type variable with an upper bound that is an array type

I have a question regarding the JLS 3rd edition, and the inference mechanism. It is stated in the section 15.12.2.7 that:

If F = U[], where the type U involves Tj, then if A is an array type V[], or a type variable with an upper bound that is an array type V[]

I tried to create a type variable with an array type upper bound, but this does not seem to be accepted by the compiler. Something like:

public class MyClass<T extends String []> { 
}

My question is: is the JLS wrong in this fragment, or did I miss something ? The last part of the sentence seems unsatisfiable for me.

Thanks

like image 608
la_urre Avatar asked Oct 30 '22 15:10

la_urre


1 Answers

From the details in the following bug:

https://bugs.openjdk.java.net/browse/JDK-6557960

The JLS is a bit incoherent, as it states in section 4.4:

Type variables have an optional bound, T & I 1 ... I n . The bound consists of either a type variable, or a class or interface type T

The type variable cannot have a bound that is an array type, which is contradictory with the part mentioned above in my question (from the section 15.12.2.7):

or a type variable with an upper bound that is an array type V[]

This part can simply be ignored as it will never be satisfiable.

Many thanks biziclop for the link

like image 191
la_urre Avatar answered Nov 15 '22 06:11

la_urre