如果我有一个通用方法
public <T> ArrayList<T> test(){ return new ArrayList<T>(); }
并且在没有显式类型参数的情况下调用他,那么将返回原始类型ArrayList
,因此如果我们调用没有类型参数的泛型方法,我们只会调用相应的非泛型方法。这是真的吗?
如果我有一个通用方法
public <T> ArrayList<T> test(){ return new ArrayList<T>(); }
并且在没有显式类型参数的情况下调用他,那么将返回原始类型ArrayList
,因此如果我们调用没有类型参数的泛型方法,我们只会调用相应的非泛型方法。这是真的吗?
不,如果允许您在没有显式类型参数的情况下调用该方法,这意味着编译器能够为您推断出适当的类型。这意味着ArrayList<WhateverInferredType>
将返回一个。
不,这个方法总是用一个类型参数调用的,并且ArrayList
总是有一个类型参数。该参数是通过类型推断确定的。在最基本的情况下(即只是调用方法),类型参数将是Object
.