当前位置: 首页 > news >正文

当Java代码遇上抽象、重载加重写,一切都不美好了

当Java代码遇上抽象、重载加重写。一切都不美好了

前几天调程序遇上个奇怪的bug。一直没找到问题,今天最终发现问题所在了,不说了先上代码(下面代码是演示样例代码,经測试,Java不存在这问题,安卓存在这问题):

片段1:

    @Override
    public void printfData() {
        printfData("hello");
    }

第一眼看上去貌似没什么不正确,这段代码非常正常嘛。代码检查工具也没报错哇,为啥就就是不正确呢?

再细致看一眼:我靠。方法名和被调用的方法名是一样的,也就是说被调用方法是调用者方法的重载,而调用方法是重写的方法?那被重写的方法呢?它在哪儿?

继续查找……

经过一番查找,得到下面代码:
片段2:

public abstract class ImplementationClass extends AbstractClass {

    @Override
    public void printfData(String s) {
        System.out.println(s);
    }

}

片段3:

public abstract class AbstractClass {

    public abstract void printfData();

    public abstract void printfData(String s);
}

我靠,原来这货是抽象出来的。。

。。。

那么它会引起什么错误呢?

经过调试,居然发现,片段1中的代码没运行。编译器直接去调用片段三中的printfData()方法。

下面个人言论经过反和谐处理:

what fuck!!!!! 
-哔 ……

那么是怎么引起的这个问题呢?

经过咨询群里的大师级人物得知:
此乃编译过程的问题。带我慢慢道来……
(因为内容过于难以理解,so,我全忘了)
(假设有谁懂的,请在评论区解说写,Thanks)

大师给的解决方式:

改动方法命名,不要让出现一个代码出现重写重载加抽象的情况。

下面个人言论经过反和谐处理:

what fuck!!!!! 
-哔 ……

相关文章:

  • 毕业(247)
  • 对安装好的RHEL7进行简单配置
  • 第一章 理解设计模式
  • Gogs
  • [转]俞敏洪在北京大学2008年开学典礼上的演讲辞
  • 四种方法校验数组中是否包含某个指定的字符串
  • 水晶报表数据整形模型 兼答CSDN
  • 微信小程序 事件
  • PHPMYADMIN简明安装教程
  • Linux 系统中这样修复 SambaCry 漏洞
  • (转)Scala的“=”符号简介
  • POJ 1739 Tony's Tour, 连通性状态压缩DP
  • 具体解释Hibernate中的二级缓存
  • JavaScript学习系列(一)什么是javascript
  • 移动端唤起键盘时取消position:fixed定位
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • AngularJS指令开发(1)——参数详解
  • bearychat的java client
  • classpath对获取配置文件的影响
  • ES6语法详解(一)
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • JAVA 学习IO流
  • JavaScript 奇技淫巧
  • Java的Interrupt与线程中断
  • java第三方包学习之lombok
  • Odoo domain写法及运用
  • PHP 7 修改了什么呢 -- 2
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • 程序员该如何有效的找工作?
  • 工作中总结前端开发流程--vue项目
  • 基于web的全景—— Pannellum小试
  • 突破自己的技术思维
  • 微信小程序开发问题汇总
  • 消息队列系列二(IOT中消息队列的应用)
  • Linux权限管理(week1_day5)--技术流ken
  • MyCAT水平分库
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​香农与信息论三大定律
  • # 透过事物看本质的能力怎么培养?
  • #AngularJS#$sce.trustAsResourceUrl
  • #if 1...#endif
  • (04)odoo视图操作
  • (第二周)效能测试
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (三) diretfbrc详解
  • (转)http协议
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)创业家杂志:UCWEB天使第一步
  • (转载)hibernate缓存
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net/c# memcached 获取所有缓存键(keys)
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)