Java泛型:类型推断

时间:2018-06-15 15:39:48

标签: java generics arraylist inference

您好我试图获取泛型类型的ArrayList来推断(实例化?)一个实际类型,但Java似乎打算将我的泛型类型设置为最常用的类型 - 对象。

import java.util.ArrayList;

public class test {

    public static <T,U> void tryInstantialGenericType(ArrayList<T> tArray, ArrayList<U> uArray) { 
        for (T tObject: tArray) {
            if (tObject != null) {
                uArray.add((U) tObject);
            } // cast type T elements in a to type U, then add to uArray.
        }
        System.out.println(uArray);
    }

    public static void main(String[] args) {    
        ArrayList na=new ArrayList<>(); 
        na.add(23.56);
        na.add(12.456);
        ArrayList<String> as=new ArrayList<>();
        as.add("dfty");
        tryInstantialGenericType(na,as); 
    }
}

这里的想法是双打可以转换为字符串,但字符串不能被转换为双打。因此,通过交换na和as,应该可以在成功运行和某种错误,编译时或运行时之间进行替换。 但事实并非如此。 相反,在这两种情况下,参数ArrayLists a&amp;如果不推断它们是字符串或双字母,则它们被推断为某种通用的所有ArrayLists,能够接受任何对象。 它为什么这样做?我认为泛型类型应该推断出特定的类型是错误的吗?

0 个答案:

没有答案