Estoy convirtiendo manualmente el código de Java (1.6) a C# y encontrando alguna dificultad con el comportamiento de las primitivas (int y doble). En C# parece que casi todas las conversiones se producen automáticamenteHacer autoboxing y unboxing se comportan de manera diferente en Java y C#
List<double> list1 = new List<double>(); // legal, C#
double d0 = 3.0;
list1.Add(d0); // legal, C#
Double dd = 2.3f; // legal, C#
list1.Add(dd); // legal, C#
List<Double> list2 = new List<Double>(); // legal, C#
double d1 = 3.0;
list2.Add(d1); // legal, C#
list2.Add(2.0); // legal, C#
double d2 = list2.get(0); // legal, C#
pero en Java sólo algunos se les permite
List<double> list1 = new ArrayList<double>(); // illegal, Java
List<Double> list2 = new ArrayList<Double>(); // legal, Java
double d1 = 3.0;
list2.add(d1); // legal, Java
list2.add(2.0); // legal, Java
double d2 = list2.get(0); // legal, Java
Estaría agradecido por un análisis sistemático de las diferencias y cualquier lógica subyacente.
Tenía la impresión de que List existía desde mucho antes de Type Erasure en Java, o estoy entendiendo mal lo que está diciendo? –
RHSeeger
@RHSeeger, List es un tipo genérico. Genéricos en Java donde/se implementan con Type Erasure. Por lo tanto, esto implica que la Lista no existía antes del Borrado de tipos (al menos con los parámetros de Tipo). Tenga en cuenta que la lista se traducirá a la lista de tipo sin formato. –