`
justin8335
  • 浏览: 28921 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

关于重载时的顺序判断

阅读更多

加宽,自动装箱,var-arg 在重载时的优先判断

Java5的设计者决定:最重要的规则应该是已有代码应该像它们过去那样运行。由于加宽能力已经存在(自动装箱1.5加入),所以优于自动装箱。

java 代码
java 代码
  1. class A{    
  2.        
  3.       static void go(Integer x) {   
  4.           System.out.println("装箱");}   
  5.       static void go(long x) {    
  6.           System.out.println("加宽");}   
  7.          
  8.       public static void main (String [] args){   
  9.           int i=8;   
  10.            go(i);   
  11.       }   
  12.   
  13. }   
  14. //打印"加宽"   

同样,装箱优于var-arg.

java 代码
  1. class B{    
  2.        
  3.       static void go(int x,int y) {   
  4.           System.out.println("加宽");}   
  5.       static void go(byte... x) {    
  6.           System.out.println("var-arg");}   
  7.          
  8.       public static void main (String [] args){   
  9.           byte b =5;   
  10.            go(b,b);   
  11.       }   
  12.   
  13. }   
  14. //打印"加宽"   

先加宽,再装箱,成立!

java 代码
  1. class C{    
  2.        
  3.      /* static void go(Long x) {  
  4.           System.out.println("加宽");}*/  
  5.      //illegal ,必须先将byte加宽为long 再包装为Long   
  6.          
  7.       static void go(Object o){   
  8.           Byte B = (Byte)o;   
  9.           System.out.println("先加宽,再包装");   
  10.       }   
  11.        
  12.       public static void main (String [] args){   
  13.           byte b =5;   
  14.            go(b);   
  15.              
  16.       }   
  17.   
  18. }   
  19. //打印结果:先加宽,再包装   
  20.   

注意:不能从一个包装器加宽的另一个包装器(IS-A失败)

分享到:
评论

相关推荐

    ASP.NET方法如何重载,文本文档

    2. **返回类型不作为判断依据**:在进行方法重载时,即使返回类型不同,只要参数列表相同,也不会被认为是重载。 3. **访问修饰符的影响**:方法的访问修饰符(如public、private等)对是否构成重载没有直接影响。 4...

    函数重载的方法

    2. **参数列表不同**:这是判断两个函数是否为重载的关键。参数列表的不同可以体现在参数的个数、参数的类型或者参数的顺序上。只要能够区分开不同的调用,编译器就能正确识别出应该调用哪个函数。 3. **返回类型不...

    用顺序表完成2个集合的交集与并集以及各个集合的情况

    1.有序顺序表的元素按照从小到大...k) 判断顺序表空否;l) 判断顺序表满否; m) 重载=;n) 重载下标运算[]; 3.用有序顺序表表示集合,实现两个有序顺序表的并和交(并和交仍是有序顺序表)并分析它们的时间复杂度;

    ASP.NE函数的重载程序

    1. 函数的返回类型不能作为判断重载的依据,因为编译器是根据参数列表来区分重载函数的。 2. 如果两个函数的参数列表只有参数类型不同,而数量和顺序相同,那么这不是有效的重载。 3. 避免过度使用函数重载,以免...

    实验二:友元和函数重载

    函数重载允许在同一作用域内定义多个同名函数,但要求这些函数的参数列表不同(参数个数、类型或顺序不同)。这样做可以为相同的操作提供不同的接口,提高代码的可读性和可维护性。 1. **参数数量不同**:两个或多...

    重载函数实现变量排序问题

    - 在每个函数中,通过简单的条件判断实现冒泡排序的思想,将数值按从小到大的顺序排列。 3. **输出结果**: - 使用`cout`输出排序后的结果。注意使用`setw`来保持输出格式的整齐。 #### 四、代码分析 ```cpp #...

    重写和重载的区别

    4. **返回类型可不同**:虽然通常情况下返回类型不影响方法的重载判断,但在某些语言(如C#)中,仅改变返回类型而不改变参数列表是不被允许的,这会导致编译错误。 **示例代码**: ```csharp class OverLoadTest {...

    Java方法重载详细说明

    - 方法的访问修饰符、返回类型以及抛出的异常并不影响方法是否被重载的判断,只有参数列表(包括个数、类型和顺序)才起决定作用。 - 在调用重载方法时,Java会根据传入的实际参数类型,按照“匹配最佳”原则来...

    Qt 基于QGraphicsItem类重载鼠标事件函数的教训

    在开发一个基于Qt的项目,如一个简单的俄罗斯方块游戏时,我们可能会遇到需要对图形元素进行交互的需求,这时候就需要重载`QGraphicsItem`类的鼠标事件函数。本文将深入探讨这个主题,以避免在实际开发中重复遇到...

    Java的方法重载概念

    请注意,方法的返回类型并不影响重载的判断,重载只看方法名和参数列表,而不关注返回值是什么。 下面是一些关于方法重载的关键点: 1. **同一类中**:重载的方法必须存在于同一个类内,不能跨越类的边界。 2. **...

    Java实现重载的方法共1页.pdf.zip

    - **方法的访问修饰符、返回类型、抛出的异常可以不同**:这些因素不是判断方法是否重载的关键,只要方法名和参数列表满足条件即可。 2. **实例解析**: 假设我们有一个`Calculator`类,它可以执行加法操作。为了...

    Java 零基础方法重载.md

    3. **返回类型无关**:方法重载时,返回类型可以不同,但这不是判断是否构成重载的依据。 4. **异常处理无关**:抛出的异常类型不作为区分重载方法的标准。 5. **访问修饰符无关**:方法的访问修饰符(如public、...

    java 方法重载

    3. **方法签名**:用于判断两个方法是否重载的是它们的“方法签名”,包括方法名和参数列表。如果两个方法的签名不同,那么它们就可以被重载。 4. **编译时多态性**:方法重载是一种编译时的多态性,因为在编译期间...

    VS2010轻松学习C#-从零到深入-天轰穿.NET4趣味编程视频教程_ 第15讲:重载

    这会影响到方法在类内外的可见性,但不影响重载的判断。 3. **方法体**:重载的方法可以有不同的实现,也就是它们执行的任务可以完全不同。这是重载的目的所在,让相同名称的方法处理不同类型或数量的输入。 4. **...

    顺序表实验报告1

    在这个实验中,我们需要实现一个具有多种功能的顺序表,包括动态内存扩展、获取顺序表长度、构造和析构操作、数据元素的增加和删除、判断顺序表是否已满或为空、获取指定元素、遍历顺序表以及文件的读取和存储。...

    Java中的方法重载(overload).docx

    3. **返回类型不能作为区分重载的标准**:Java中,方法的返回类型不能作为判断重载的依据。例如,`public static int add(int a, int b)` 和 `public static double add(int a, int b)`,尽管返回类型不同,但这两个...

    实验7 多态:运算符重载1

    这个函数的实现需要遍历数组,对于每个雇员,使用重载的“>”运算符判断其工作年限是否超过当前最长的雇员。 在实验的最后阶段,我们需要编写一个主函数来测试getMostFaith函数。这个主函数会创建一个包含5个雇员...

    学生成绩管理顺序表实现(c++)数据结构

    根据给定的文件信息,我们可以总结出以下关于“学生成绩管理顺序表实现(C++)数据结构”的相关知识点: ### 1. **程序概述** 本程序主要通过顺序表的数据结构来实现对学生成绩的基本操作,如插入、删除、查询等。...

Global site tag (gtag.js) - Google Analytics