在调用中间指定一个类型的java特性是什么?

在调用中间指定一个类型的java特性是什么?,java,types,casting,Java,Types,Casting,由于我真的不知道如何描述这一点,这将是困难的,但我会尝试 在上下文中,我使用了两个类 人 顾客延伸人 我收到了一个Customer数组,我想把它放在向量中。当我编写这段代码时,AndroidStudio自动完成它,如下所示: Vector<Person> persons = Arrays.<Person>asList(customers) Vector persons=Arrays.asList(客户) 我的问题是:这个在数组。和asList之间做什么,因为删除它

由于我真的不知道如何描述这一点,这将是困难的,但我会尝试

在上下文中,我使用了两个类

  • 顾客延伸人
我收到了一个
Customer
数组,我想把它放在
向量中。当我编写这段代码时,AndroidStudio自动完成它,如下所示:

Vector<Person> persons = Arrays.<Person>asList(customers)
Vector persons=Arrays.asList(客户)
我的问题是:这个
数组。
asList
之间做什么,因为删除它不会改变任何事情,因为Java已经将类型从
Customer
推断为
Person

在我看来,它表明了
asList
返回的列表的类型,但我仍然不理解它的用处


有人能解释一下它是什么、它叫什么以及它的真正用途吗?

它适用于类型引用。 如果你像下面这样打电话

Arrays.<Person>asList(customers)
Arrays.asList(客户)
编译器将T替换为Person类

// definition
static <T> List<T> asList(T... a)  
// changed
static <Person> List<Person> asList(Person... a)  
//定义
静态列表asList(T…a)
//改变
静态列表asList(人员…a)

我只是想澄清一下,您是在特别询问这种语法,还是尽管编译器能够推断,为什么在这里使用这种语法?您知道泛型类型吗?它是泛型类型,是Java中的一个主题,简单的一点是,当您将Person描述为向量时,为了进一步使用,您不需要将Person项强制转换为Person类以使用其方法或属性(如果可以!),编译器将Person成员假定为Person类的对象。当然,也可以将其定义为customer:Vector persons=Arrays.asList(customers)。请让我知道解释是否清楚。@Carcigenicate我知道泛型类型('在Java中工作了5年),我问两个问题^^我以前从未见过这种语法,也不明白为什么会使用它,尽管它看起来“毫无用处”@QuentinBeuvelet写这篇文章的人(/生成该模板的AndroidStudio自动完成模板)可能更喜欢明确性而不是含蓄性和推断性。