- 
    Enhancement 
- 
    Resolution: Not an Issue
- 
     P4 P4
- 
    None
- 
    5.0
- 
        sparc
- 
        solaris_9
                    A DESCRIPTION OF THE REQUEST :
Consider the following piece of code:
List<Map<String,List<Integer>>> list = new ArrayList<Map<String,List<Integer>>>();
One has to repeat type parameters twice (and they can be even longer
than in this example). This kind of repetition of type arguments is
bug-prone and creates unnecessary clutter in the code. One shall be
able to write this code simpler, like this:
List<Map<String,List<Integer>>> list = new ArrayList();
JUSTIFICATION :
For ease of development.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The proposed code shall compile normally via type parameter inference mechanism.
ACTUAL -
This code complies, but produces unchecked warnings.
---------- BEGIN SOURCE ----------
import java.util.*;
public class ListCreate {
public static void main(String[] args) {
List<Map<String,List<Integer>>> list = new ArrayList();
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Use static factory methods instead of constructors. They work just
fine with type argument inference without any warnings.
import java.util.*;
public class ListCreate2 {
public static void main(String[] args) {
List<Map<String,List<Integer>>> list = newArrayList();
}
public static <T> ArrayList<T> newArrayList() {
return new ArrayList<T>();
}
}
###@###.### 2005-1-24 13:16:39 GMT
            
Consider the following piece of code:
List<Map<String,List<Integer>>> list = new ArrayList<Map<String,List<Integer>>>();
One has to repeat type parameters twice (and they can be even longer
than in this example). This kind of repetition of type arguments is
bug-prone and creates unnecessary clutter in the code. One shall be
able to write this code simpler, like this:
List<Map<String,List<Integer>>> list = new ArrayList();
JUSTIFICATION :
For ease of development.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The proposed code shall compile normally via type parameter inference mechanism.
ACTUAL -
This code complies, but produces unchecked warnings.
---------- BEGIN SOURCE ----------
import java.util.*;
public class ListCreate {
public static void main(String[] args) {
List<Map<String,List<Integer>>> list = new ArrayList();
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Use static factory methods instead of constructors. They work just
fine with type argument inference without any warnings.
import java.util.*;
public class ListCreate2 {
public static void main(String[] args) {
List<Map<String,List<Integer>>> list = newArrayList();
}
public static <T> ArrayList<T> newArrayList() {
return new ArrayList<T>();
}
}
###@###.### 2005-1-24 13:16:39 GMT
- relates to
- 
                    JDK-6840638 Project Coin: Improved Type Inference for Generic Instance Creation (aka 'diamond') -           
- Closed
 
-         
- 
                    JDK-6242254 Language support for type inference -           
- Closed
 
-         
- 
                    JDK-8061419 Typedef (alias) -           
- Closed
 
-