不能通过设置不同的返回值来实现方法重载,这样设置的方法不一定会编译通过,但Class文件中可以共存。

如下

1. 例证
IDEA工具,JDK8测试:

2. 原因
参考自《深入理解Java虚拟机》(第3版),如图

在Java语言中,要重载(Overload)一个方法,除了要与原方法具有相同的简单名称之外,还要求必须拥有一个与原方法不同的特征签名。特征签名是指一个方法中各个参数在常量池中的字段符号引用的集合,也正是因为返回值不会包含在特征签名之中,所以Java语言里面是无法仅仅依靠返回值的不同来对一个已有方法进行重载的。但是在Class文件格式之中,特征签名的范围明显要更大一些,只要描述符不是完全一致的两个方法就可以共存。也就是说,如果两个方法有相同的名称和特征签名,但返回值不同,那么也是可以合法共存于同一个Class文件中的。

代码清单10-10中的重载当然不是根据返回值来确定的,之所以这次能编译和执行成功,是因为两个method(方法加入了不同的返回值后才能共存在一个Class文件之中。第6章介绍Class文件方法表( method_info) 的数据结构时曾经提到过,方法重载要求方法具各不同的特征签名,返回值并不包含在方法的特征签名中,所以返回值不参与重载选择,但是在Class文件格式之中,只要描述符不是完全一致的两个方法就可以共存。 也就是说两个方法如果有相同的名称和特征签名,但返回值不同,那它们也是可以合法地共存于一个Class文件中的。

Java方法重载中返回值的问题相关推荐

  1. java方法带参数返回值_Java方法中的参数太多,第6部分:方法返回

    java方法带参数返回值 在当前的系列文章中,我正在致力于减少调用Java方法和构造函数所需的参数数量,到目前为止,我一直专注于直接影响参数本身的方法( 自定义类型 , 参数对象 , 构建器模式 , ...

  2. java值传递和引用传递_辨析Java方法参数中的值传递和引用传递

    小方法大门道 小瓜瓜作为一个Java初学者,今天跟我说她想通过一个Java方法,将外部变量通过参数传递到方法中去,进行逻辑处理,方法执行完毕之后,再对修改过的变量进行判断处理,代码如下所示. publ ...

  3. JAVA 方法重载和方法覆写的区别(有代码)

    方法重载(override)与方法覆写(overload)的区别 1.方法名相同,但是各自的参数不同,叫做方法重载.方法重载的返回值都相同.其功能类的方法都使用同一名字. 举一个简单的方法重载的例子, ...

  4. java递归函数返回值_java基础5(方法、有无返回值、重载、递归)

    方法: 定义:解决事情的办法.具有特定功能的代码块 特点: 1.方法不调用不执行 2.类中方法外,方法不能嵌套 有返回值类型的方法 定义格式: 修饰符 返回值类型 方法名([参数列表]){ 方法体语句 ...

  5. java方法重载和重载方法_Java中的方法重载

    java方法重载和重载方法 The concept of Method Overloading in Java is where a class can have multiple methods w ...

  6. 获取键盘录入的5个int数,并存放到int数组arr中,输入前提示输入的是第几个值 * * 2.2 传递数组arr调用getNum(int[] arr)方法,获取返回值,并打印输出

    package Day05;import java.util.Scanner;/*** 2.定义main方法:* * 2.1 获取键盘录入的5个int数,并存放到int数组arr中,输入前提示输入的是 ...

  7. 重学Java(035)——Java基础知识(类作为成员变量、接口作为成员变量、接口作为方法参数和返回值类型)

    学习内容:三种引用类型用法 一.类作为成员变量 二.接口作为成员变量 三.接口作为方法参数和返回值类型 实际的开发中,引用类型的使用非常重要,也是非常普遍的.我们可以在理解基本类型的使用方式基础上,进 ...

  8. java方法重载和重载方法_我们可以在Java中重载main()方法吗?

    java方法重载和重载方法 The question is that "can we overload main() method in Java?" 问题是"我们可以在 ...

  9. java方法重载和重载方法_Java中的重载与重载

    java方法重载和重载方法 Overriding Vs Overloading In Java 在Java中覆盖vs重载 Overriding and Overloading are the core ...

  10. Vue获取methods中方法的return返回值

    Vue获取methods中方法的return返回值 1. 遇到的需求 需要调用methods中的一个方法直接使用return返回值: 但直接使用return关键字是undefined,无法直接拿到返回 ...

最新文章

  1. Java设计模式(工厂模式>抽象工厂模式和原型模式)
  2. 关于运行中输入ping后,跳出“打开方式”选择对话框的问题
  3. 信息系统项目管理师-常用术语中英文对应
  4. AI公开课:19.05.29 浣军-百度大数据实验室主任《AutoDL 自动化深度学习建模的算法和应用》课堂笔记以及个人感悟
  5. mysql 创建、修改、删除表
  6. shell脚本_Shell脚本
  7. ip找计算机名 linux,如何从IP地址中查找LAN中的计算机名称?
  8. 一个小例子介绍Obj-C的函数命名方式
  9. 全球唯一标识符 System.Guid.NewGuid().ToString()
  10. 大数据、人工智能如何融合?来自微软、阿里、滴滴、科大讯飞等的 120 多位专家要用 3 天为你解答!
  11. linux系统在物流公司的z作用,【项目案例】基于RFID的智能物流仓储系统
  12. 中英文国家名及手机号码前缀
  13. 如何换ip ,最简单有效的换ip方法在这里
  14. 台湾省谷歌高清卫星地图下载
  15. 在github上建立自己的网站
  16. 推荐系统(十六)多任务学习:腾讯PLE模型(Progressive Layered Extraction model)
  17. 宁波实训day1: java web开发常用工具安装
  18. Ethernet guarder V1.1.exe 下载
  19. 【Java小游戏】俄罗斯方块
  20. 【设计模式】策略模式

热门文章

  1. ShaderForge插件介绍详解
  2. 全国计算机城市排名,这五大城市教育资源全国领先,各城市优质高校排行榜一定要收藏!...
  3. win10 x64+VS2017社区版+OpenCV3.2.0安装
  4. NeurIPS 2021 | 医学图像GAN生成,在Noisy Data上训练出超越监督学习的模型
  5. centos7 elasticsearch 安装启动问题
  6. 九宫格拼图游戏的总结
  7. 【Vue】基础入门 —— 黑马程序员
  8. 华为网络工程师认证需要哪些学习资料?
  9. maven命令上传jar、pom到Nexus
  10. 电力职称计算机水平考试题库 2019,2019职称计算机考试Excel练习及答案汇总1