@specialized注解有什么用?
⭐️⭐️⭐️⭐️⭐️
用于特化泛型,避免装箱/拆箱以提升性能(不考虑Integer和int的内存差异),作用在泛型参数上,如:
class MyList[@specialized T]
本注解最终在编译期,会为所有primitive types的生成特化版本(此时泛型参数被移除,转而使用primitive types),
@specialized
还允许指定要特化的primitive types,如:class MyList[@specialized(Int, Double, Boolean) T]
,此时仅为Int, Double, Boolean生成特化类。本质上
@specialized
是以空间换时间,需要注意的是,不带参数的@specialized
注解默认会为所有primitive types生成特化版本(也就是下面的9个类型都会生成),所以字节码会增大数倍,通常,应该指定需要的primitive types,不要使用默认的。伴生对象Specializable中,对特化进行了分组,常见如下:
答到1及格,答完满分
Last updated