加宽,自动装箱,var-arg 在重载时的优先判断
Java5的设计者决定:最重要的规则应该是已有代码应该像它们过去那样运行。由于加宽能力已经存在(自动装箱1.5加入),所以优于自动装箱。
java 代码
java 代码
- class A{
-
- static void go(Integer x) {
- System.out.println("装箱");}
- static void go(long x) {
- System.out.println("加宽");}
-
- public static void main (String [] args){
- int i=8;
- go(i);
- }
-
- }
-
同样,装箱优于var-arg.
java 代码
- class B{
-
- static void go(int x,int y) {
- System.out.println("加宽");}
- static void go(byte... x) {
- System.out.println("var-arg");}
-
- public static void main (String [] args){
- byte b =5;
- go(b,b);
- }
-
- }
-
先加宽,再装箱,成立!
java 代码
- class C{
-
-
-
-
-
- static void go(Object o){
- Byte B = (Byte)o;
- System.out.println("先加宽,再包装");
- }
-
- public static void main (String [] args){
- byte b =5;
- go(b);
-
- }
-
- }
-
-
注意:不能从一个包装器加宽的另一个包装器(IS-A失败)
分享到:
相关推荐
2. **返回类型不作为判断依据**:在进行方法重载时,即使返回类型不同,只要参数列表相同,也不会被认为是重载。 3. **访问修饰符的影响**:方法的访问修饰符(如public、private等)对是否构成重载没有直接影响。 4...
2. **参数列表不同**:这是判断两个函数是否为重载的关键。参数列表的不同可以体现在参数的个数、参数的类型或者参数的顺序上。只要能够区分开不同的调用,编译器就能正确识别出应该调用哪个函数。 3. **返回类型不...
1.有序顺序表的元素按照从小到大...k) 判断顺序表空否;l) 判断顺序表满否; m) 重载=;n) 重载下标运算[]; 3.用有序顺序表表示集合,实现两个有序顺序表的并和交(并和交仍是有序顺序表)并分析它们的时间复杂度;
1. 函数的返回类型不能作为判断重载的依据,因为编译器是根据参数列表来区分重载函数的。 2. 如果两个函数的参数列表只有参数类型不同,而数量和顺序相同,那么这不是有效的重载。 3. 避免过度使用函数重载,以免...
函数重载允许在同一作用域内定义多个同名函数,但要求这些函数的参数列表不同(参数个数、类型或顺序不同)。这样做可以为相同的操作提供不同的接口,提高代码的可读性和可维护性。 1. **参数数量不同**:两个或多...
- 在每个函数中,通过简单的条件判断实现冒泡排序的思想,将数值按从小到大的顺序排列。 3. **输出结果**: - 使用`cout`输出排序后的结果。注意使用`setw`来保持输出格式的整齐。 #### 四、代码分析 ```cpp #...
4. **返回类型可不同**:虽然通常情况下返回类型不影响方法的重载判断,但在某些语言(如C#)中,仅改变返回类型而不改变参数列表是不被允许的,这会导致编译错误。 **示例代码**: ```csharp class OverLoadTest {...
- 方法的访问修饰符、返回类型以及抛出的异常并不影响方法是否被重载的判断,只有参数列表(包括个数、类型和顺序)才起决定作用。 - 在调用重载方法时,Java会根据传入的实际参数类型,按照“匹配最佳”原则来...
在开发一个基于Qt的项目,如一个简单的俄罗斯方块游戏时,我们可能会遇到需要对图形元素进行交互的需求,这时候就需要重载`QGraphicsItem`类的鼠标事件函数。本文将深入探讨这个主题,以避免在实际开发中重复遇到...
请注意,方法的返回类型并不影响重载的判断,重载只看方法名和参数列表,而不关注返回值是什么。 下面是一些关于方法重载的关键点: 1. **同一类中**:重载的方法必须存在于同一个类内,不能跨越类的边界。 2. **...
- **方法的访问修饰符、返回类型、抛出的异常可以不同**:这些因素不是判断方法是否重载的关键,只要方法名和参数列表满足条件即可。 2. **实例解析**: 假设我们有一个`Calculator`类,它可以执行加法操作。为了...
3. **返回类型无关**:方法重载时,返回类型可以不同,但这不是判断是否构成重载的依据。 4. **异常处理无关**:抛出的异常类型不作为区分重载方法的标准。 5. **访问修饰符无关**:方法的访问修饰符(如public、...
3. **方法签名**:用于判断两个方法是否重载的是它们的“方法签名”,包括方法名和参数列表。如果两个方法的签名不同,那么它们就可以被重载。 4. **编译时多态性**:方法重载是一种编译时的多态性,因为在编译期间...
这会影响到方法在类内外的可见性,但不影响重载的判断。 3. **方法体**:重载的方法可以有不同的实现,也就是它们执行的任务可以完全不同。这是重载的目的所在,让相同名称的方法处理不同类型或数量的输入。 4. **...
在这个实验中,我们需要实现一个具有多种功能的顺序表,包括动态内存扩展、获取顺序表长度、构造和析构操作、数据元素的增加和删除、判断顺序表是否已满或为空、获取指定元素、遍历顺序表以及文件的读取和存储。...
3. **返回类型不能作为区分重载的标准**:Java中,方法的返回类型不能作为判断重载的依据。例如,`public static int add(int a, int b)` 和 `public static double add(int a, int b)`,尽管返回类型不同,但这两个...
这个函数的实现需要遍历数组,对于每个雇员,使用重载的“>”运算符判断其工作年限是否超过当前最长的雇员。 在实验的最后阶段,我们需要编写一个主函数来测试getMostFaith函数。这个主函数会创建一个包含5个雇员...
根据给定的文件信息,我们可以总结出以下关于“学生成绩管理顺序表实现(C++)数据结构”的相关知识点: ### 1. **程序概述** 本程序主要通过顺序表的数据结构来实现对学生成绩的基本操作,如插入、删除、查询等。...