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

广东网站建设方案报价网址怎么申请

广东网站建设方案报价,网址怎么申请,做爰视频在线观看免费网站,简述jsp网站开发的环境配置个人理解: 1. 逆变in向上兼容类 2. 协变out向下兼容类 在面向对象编程中,尤其是使用泛型时,in和out关键字用于限制类型参数的协变性和逆变性。 in关键字(逆变): in关键字用于标记泛型类型参数的逆变性。…

个人理解:

1. 逆变in向上兼容类

2. 协变out向下兼容类

在面向对象编程中,尤其是使用泛型时,inout关键字用于限制类型参数的协变性和逆变性。

  1. in关键字(逆变):

    • in关键字用于标记泛型类型参数的逆变性。逆变表示可以使用指定类型的基类或超类作为方法的参数类型。
    • 当一个泛型类或接口使用in关键字限定类型参数时,该泛型类型可以被赋值给比它更通用的类型。
    • 例如,如果有一个只写存储库,你无法通过它查询信息,只能往里面添加动物。这种情况下,可以将泛型类型参数声明为in Animal,表示该类型参数可以是Animal或其任何基类。
  2. out关键字(协变):

    • out关键字用于标记泛型类型参数的协变性。协变表示可以使用指定类型的子类或派生类作为方法的返回类型。
    • 当一个泛型类或接口使用out关键字限定类型参数时,该泛型类型可以被赋值给比它更具体的类型。
    • 例如,如果有一个只读存储库,你无法通过它添加动物,只能查询信息。这种情况下,可以将泛型类型参数声明为out Animal,表示该类型参数可以是Animal或其任何派生类。

通过使用inout关键字,我们可以在泛型类型参数中限制类型的协变性和逆变性,以确保类型安全性。这样做的好处是能够更容易地对泛型类型进行复用和灵活性。

代码示例:

// 声明一个只读存储库接口,用于查询动物信息
interface ReadOnlyRepository<out T> {fun getAll(): List<T>fun getById(id: String): T?
}// 声明一个只写存储库接口,用于添加动物
interface WriteOnlyRepository<in 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 : ReadOnlyRepository<Animal> {private val animals = listOf(Animal("Lion"), Dog("Buddy"), Cat("Whiskers"))override fun getAll(): List<Animal> {return animals}override fun getById(id: String): Animal? {return animals.find { it.name == id }}
}// 只写存储库实现
class WriteOnlyAnimalRepository : WriteOnlyRepository<Animal> {private val animals = mutableListOf<Animal>()override fun add(item: Animal) {animals.add(item)}
}fun main() {val readOnlyRepo: ReadOnlyRepository<Animal> = ReadOnlyAnimalRepository()val writeOnlyRepo: WriteOnlyRepository<Dog> = 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
}

在上面的代码示例中,我们定义了两个存储库接口:ReadOnlyRepositoryWriteOnlyRepositoryReadOnlyRepository接口声明了返回类型out T,表示它只能查询(读取)动物信息。WriteOnlyRepository接口声明了参数类型in T,表示它只能添加(写入)动物。

然后,我们创建了一个ReadOnlyAnimalRepository类来实现ReadOnlyRepository<Animal>接口,用于查询动物信息。同样地,我们还创建了一个WriteOnlyAnimalRepository类来实现WriteOnlyRepository<Animal>接口,用于添加动物。

main函数中,我们首先将ReadOnlyAnimalRepository赋值给readOnlyRepo变量,这是合法的,因为ReadOnlyAnimalRepository实现了ReadOnlyRepository<Animal>接口。

然后,我们将WriteOnlyAnimalRepository赋值给writeOnlyRepo变量,这也是合法的,因为WriteOnlyAnimalRepository实现了WriteOnlyRepository<Animal>接口。注意,虽然我们将其赋值给writeOnlyRepo变量,但我们仍然只能使用add方法添加

http://www.yayakq.cn/news/468914/

相关文章:

  • 网站seo检测偏门网站建设
  • 息壤网站打不开了每平每家设计家官网
  • 东南亚购物网站排名wordpress对seo友好吗
  • 网站备案信息填写网站建设公司发展
  • 郑州平台网站建设长春市建设集团
  • 苏州专门网站怎么做淘客推广网站
  • 电子商务网站建设的概要设计口碑营销的缺点
  • 网站做成小程序微官网登录入口
  • 在哪个网站找水利工地做南宁网页制作
  • 高新公司网站建设电话wordpress深度优化主题
  • WordPress破解怎样主题修复企业网站seo推广方案
  • 不懂代码如何开始网站程序建设网站空间购买价格
  • 怎样用vps做网站如何提升线上销售的方法
  • 网站设计 广西上海网站建设多少费用
  • 深圳安嘉建设有限公司网站泰安市住房和城乡建设局网站
  • 页面设计排版网站比较大的软件下载网站
  • 公司找私人做网站网站推广经验杂谈
  • 网站优化需要哪些工具搜索引擎推广的关键词
  • 湘潭网站建设厦门网站制作网络广告一般是怎么收费
  • 返利网站开发代码网页设计周记26篇300字
  • 如何做品牌推广网站网站设计方案书
  • 住总第三开发建设有限公司网站网络营销ppt案例
  • 做ppt的网站有哪些内容东莞经济贸易学校网络营销
  • 网站建设推广语做购物网站平台
  • 婚庆网站建设公司网站的中英文翻译是怎么做的
  • 天河建设网站公司排名企业公司网站源码
  • 免费网站下载app软件免费广东网络营销服务
  • 免费网站空间可上传网站怎么删除织梦做的网站
  • 山东省建设工程招标中心网站wordpress单本小说采集
  • 网站建设与管理就业短网址网站