在scala中使用或不使用泛型类型创建实例有什么不同?

在scala中使用或不使用泛型类型创建实例有什么不同?

问题描述:

我有一个类定义和两个函数定义在scala中使用或不使用泛型类型创建实例有什么不同?

class Queue[T] (
    private val leading: List[T] 
    private val trailing: List[T] 
){} 

def a[T](xs: T*) = new Queue[T](xs.toList, Nil) 

def b[T](xs: T*) = new Queue(xs.toList, Nil) 

从这里,类与泛型类型定义,以及两个函数的作用。

但是在这里,两个函数的区别在于创建实例时。

工作都很好,没有错误与下面的表达式创建:

a(1,2,3,4) 
b(1,2,3,4) 

a[Int](1,2,3,4) 
b[Int](1,2,3,4) 

但是,我想不出有什么区别。

+0

如果您为'Queue'和'b'的类型参数选择了不同的名称,谈论这个会容易一些。 –

没有。类别Queue的类型参数T将被推断为方法b的类型参数T