深入探索泛型类和方法
1. 泛型方法的类型转换
在泛型方法中,类型擦除后,方法返回的可能是上界类型。例如, maximum 方法在类型擦除后返回 Comparable 类型,但调用者期望的返回类型是传递给 maximum 方法的参数类型,如 Integer 、 Double 或 String 。编译器在替换类型参数信息时,会在每个方法调用前插入显式的类型转换操作,以确保返回值是调用者期望的类型。
(Integer) maximum(3, 4, 5);
(Double) maximum(6.6, 8.8, 7.7);
(String) maximum("pear", "apple", "orange");
这里,返回值的类型转换类型是从特定方法调用的参数类型推断出来的,因为根据方法声明,返回类型和参数类型是匹配的。如果没有泛型,就需要手动实现类型转换操作。
2. 泛型方法的重载
泛型方法和其他方法一样可以重载。一个类可以提供两个或更多同名但参数不同的泛型方法。例如, printArray 泛型方法可以通过添加 lowSubscript 和 highSubscript 参数来指定输出数组的部分,从而实现重载。
泛型方法也可以被非泛型方法重载。编译器在遇到方法调用时,会搜索与方法名和
超级会员免费看
订阅专栏 解锁全文
1241

被折叠的 条评论
为什么被折叠?



