当前位置: 首页 > news >正文

门户网站建设采购asp.net 网站开发 教程

门户网站建设采购,asp.net 网站开发 教程,wordpress d8 3.0,网店美工设计的四大要点个人理解#xff1a; 1. 逆变in向上兼容类 2. 协变out向下兼容类 在面向对象编程中#xff0c;尤其是使用泛型时#xff0c;in和out关键字用于限制类型参数的协变性和逆变性。 in关键字#xff08;逆变#xff09;#xff1a; in关键字用于标记泛型类型参数的逆变性。…个人理解 1. 逆变in向上兼容类 2. 协变out向下兼容类 在面向对象编程中尤其是使用泛型时in和out关键字用于限制类型参数的协变性和逆变性。 in关键字逆变 in关键字用于标记泛型类型参数的逆变性。逆变表示可以使用指定类型的基类或超类作为方法的参数类型。当一个泛型类或接口使用in关键字限定类型参数时该泛型类型可以被赋值给比它更通用的类型。例如如果有一个只写存储库你无法通过它查询信息只能往里面添加动物。这种情况下可以将泛型类型参数声明为in Animal表示该类型参数可以是Animal或其任何基类。 out关键字协变 out关键字用于标记泛型类型参数的协变性。协变表示可以使用指定类型的子类或派生类作为方法的返回类型。当一个泛型类或接口使用out关键字限定类型参数时该泛型类型可以被赋值给比它更具体的类型。例如如果有一个只读存储库你无法通过它添加动物只能查询信息。这种情况下可以将泛型类型参数声明为out Animal表示该类型参数可以是Animal或其任何派生类。 通过使用in和out关键字我们可以在泛型类型参数中限制类型的协变性和逆变性以确保类型安全性。这样做的好处是能够更容易地对泛型类型进行复用和灵活性。 代码示例 // 声明一个只读存储库接口用于查询动物信息 interface ReadOnlyRepositoryout T {fun getAll(): ListTfun getById(id: String): T? }// 声明一个只写存储库接口用于添加动物 interface WriteOnlyRepositoryin T {fun add(item: T) }// Animal类作为基类 open class Animal(val name: String)// Dog类继承自Animal class Dog(name: String) : Animal(name)// Cat类继承自Animal class Cat(name: String) : Animal(name)// 只读存储库实现 class ReadOnlyAnimalRepository : ReadOnlyRepositoryAnimal {private val animals listOf(Animal(Lion), Dog(Buddy), Cat(Whiskers))override fun getAll(): ListAnimal {return animals}override fun getById(id: String): Animal? {return animals.find { it.name id }} }// 只写存储库实现 class WriteOnlyAnimalRepository : WriteOnlyRepositoryAnimal {private val animals mutableListOfAnimal()override fun add(item: Animal) {animals.add(item)} }fun main() {val readOnlyRepo: ReadOnlyRepositoryAnimal ReadOnlyAnimalRepository()val writeOnlyRepo: WriteOnlyRepositoryDog WriteOnlyAnimalRepository()val allAnimals readOnlyRepo.getAll()println(All Animals:)allAnimals.forEach { animal -println(- ${animal.name})}val dog1 Dog(Max)writeOnlyRepo.add(dog1)println(\nAdded Dog:)val addedDog readOnlyRepo.getById(dog1.name)println(- ${addedDog?.name})val cat1 Cat(Misty)// writeOnlyRepo.add(cat1) // Compilation Error: Type mismatch. Required: Dog, Found: Cat }在上面的代码示例中我们定义了两个存储库接口ReadOnlyRepository和WriteOnlyRepository。ReadOnlyRepository接口声明了返回类型out T表示它只能查询读取动物信息。WriteOnlyRepository接口声明了参数类型in T表示它只能添加写入动物。 然后我们创建了一个ReadOnlyAnimalRepository类来实现ReadOnlyRepositoryAnimal接口用于查询动物信息。同样地我们还创建了一个WriteOnlyAnimalRepository类来实现WriteOnlyRepositoryAnimal接口用于添加动物。 在main函数中我们首先将ReadOnlyAnimalRepository赋值给readOnlyRepo变量这是合法的因为ReadOnlyAnimalRepository实现了ReadOnlyRepositoryAnimal接口。 然后我们将WriteOnlyAnimalRepository赋值给writeOnlyRepo变量这也是合法的因为WriteOnlyAnimalRepository实现了WriteOnlyRepositoryAnimal接口。注意虽然我们将其赋值给writeOnlyRepo变量但我们仍然只能使用add方法添加
http://www.w-s-a.com/news/860588/

相关文章:

  • 做网站的前景如何郑州seo规则
  • 学校户网站建设方案专业设计服务
  • 电子商务网站建设好么有一个网站怎么做cpc
  • 镇海住房和建设交通局网站跨境电商就是忽悠人的
  • 维修网站怎么做跨境电商发展现状如何
  • 手机网站设计公司皆选亿企邦桐乡市建设局官方网站
  • 企业培训 电子商务网站建设 图片山东省住房和城乡建设厅网站主页
  • 做酒招代理的网站赣icp南昌网站建设
  • 怎样做网站內链大连市建设工程信息网官网
  • 网站软件免费下载安装泰安网站建设收费标准
  • 部署iis网站校园网站设计毕业设计
  • 网站快慢由什么决定塘沽手机网站建设
  • 苏州那家公司做网站比较好装修队做网站
  • 外贸网站推广中山网站流量团队
  • 网站前端设计培训做一份网站的步zou
  • 网站备案拍照茶叶网页设计素材
  • wordpress 手机商城模板关键词优化软件有哪些
  • 网站301做排名python做的网站如何部署
  • 昆山做企业网站工信部网站 备案
  • 做英文的小说网站有哪些网站做qq登录
  • 湖州建设局招投标网站深圳广告公司集中在哪里
  • 重庆主城推广网站建设商城网站建设预算
  • 宁波品牌网站推广优化公司开发公司工程部工作总结
  • 长沙建站模板微信网站建设方案
  • 不让网站在手机怎么做门户网站 模板之家
  • 网站建设及推广图片wordpress文章摘要调用
  • 手机版网站案例全国信息企业公示系统
  • 模仿别人网站建设银行广州招聘网站
  • 沧州网站建设沧州内页优化
  • 代加工网站有哪些专门做网站关键词排名