编译器规定 out泛型只能读,in泛型只能写,对于开发来讲有什么积极的意义?感觉只是在增加麻烦呢
来源:9-7 小案例:泛型实现一个MVP框架

爱吃Toast
2019-06-12
老师,既然使用 @UnsafeVariance 就可以突破这个限制,为什么Kotlin编译器要限制这个事情?看不到必要性。
我觉得这种数据读写限制应该是开发人员去考虑的,比如List<out E>,不提供能修改数据的方法就行了。
反观Java中使用extends定义的协变,Java编译器不会去限制setter操作啊。
写回答
3回答
-
积极意义在于推动开发人员做出清楚的类型设计,对接口使用者赋予足够的类型约束。Java的泛型真的是太宽松了
022019-06-14 -
bennyhuo
2019-06-12
Java的泛型是有缺陷的,为了构想兼容做了很多妥协。所以java的泛型代码一般都不是很严格,以至于很多人根本搞不懂类型系统,搞不懂的结果就是乱写,出bug。
00 -
bennyhuo
2019-06-12
但多数开发人员不会考虑,所以要强制他们考虑。unsafeviariance,已经很明白了,不安全,不要轻易用。
00
相似问题