Scala的泛型
类比java中的泛型:
上界(协变)、下界(逆变)
scala中泛型采用中括号声明
val array = Array[Int](1,2,3,4) array(3)
//声明什么类型就返回什么类型
//test[String]() def test[T](t: T)= { //声明什么类型就返回什么类型 }
泛型上界
test[User2](new User3) def test[T <: User2](t: T) ={ //上界 从树的结构上比它小的,也就是它的子类型 }
泛型下界
test[User1](new User2) def test[T >: User2](t: T) ={ //下界 从树的结构上比它大的,也就是它的父类型 println(t) }
class User1{
}
class User2 extends User1 {
}
class User3 extends User2 {
}
协变(+)(也就是上限上界):这个类型往它的子类中去找,多态的感觉;从类的关系往回推叫逆变(-)(也就是下限下界);它们主要在类声明时使用;
java中: List<Object> lis = new ArrayList<Object>(); //new ArrayList<Object> 这里只能写Object,不能写其他类型 lis.add(new Dept()); //但可添加其他类型的对象
/*val user: User4[User2] = new User4[User3] //协变,+User2为上限,比它小的子类都可以,父类就不行了*/ val user: User4[User2] = new User4[User1] //逆变,+User2为下限,比它大的父类都可以,子类就不行了 // new User4[User3] } class User1{ } class User2 extends User1 { } class User3 extends User2 { } /*class User4[+User2]{ }*/ class User4[-User2]{ //class User4[User2]{} 如果是+ -都不加,就是只能是这个类型 }
分类:
大数据技术栈 / Scala
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人