我在Kotlin代码中经常使用类型别名,但是我想知道是否可以对它们实施类型安全性。
typealias Latitude = Double typealias LOngitude= Double fun someFun(lat: Latitude, lon: Longitude) {...} val lat: Latitude = 12.34 val lon: LOngitude= 56.78 someFun(lon, lat) // parameters are in a wrong order, but the code compiles fine
如果能以某种方式防止类型别名之间的隐式转换,从而避免此类问题,那将是很好的。
当然,存在一个问题,基本类型的操作将无法用于类型别名,但是可以使用扩展功能(或强制转换)解决。
我不想使用仅包含一个字段的数据类,因为这似乎有些过大,尤其是对于原始类型(或者我错了,它们会被优化吗?)
那么问题来了:我可以以某种方式为类型别名强制执行类型安全吗?