首页 > 编程语言 >通过javap反编译接口

通过javap反编译接口

时间:2024-11-27 23:25:45浏览次数:14  
标签:反编译 abstract 修饰符 接口 void javap public

在 Java 中,接口(interface)中的方法默认都是 publicabstract 的,即使在源代码中没有显式地指定这两个修饰符。当你编写:

public interface Person {
    void eat();
    void sleep();
}

实际上等价于:

public interface Person {
    public abstract void eat();
    public abstract void sleep();
}

这是因为根据 Java 语言规范,在接口中声明的方法如果没有指定访问修饰符,默认就是 public,而且接口方法默认是 abstract(抽象)的。

当你使用 javac 编译器编译源代码时,编译器会将这些隐式的修饰符(publicabstract)应用到方法上,并将其写入生成的字节码文件中。

随后,当你使用 javap 反编译字节码时,javap 会显示出方法的完整签名,包括所有的修饰符。因此,你会看到:

public interface Person {
  public abstract void eat();
  public abstract void sleep();
}

这就是为什么你在反编译后看到方法前面多了 public abstract 修饰符的原因。

总结:因为接口中的方法默认是 publicabstract,编译器在编译时会将这些修饰符应用到方法上,反编译时就会显示出来。

参考

Answer: Because in Java, interface methods are implicitly public and abstract—even if not explicitly declared—so the compiler adds these modifiers, and javap displays them when decompiling.

标签:反编译,abstract,修饰符,接口,void,javap,public
From: https://www.cnblogs.com/xkxf/p/18573294

相关文章

  • 【接口封装】——6、省略用户名的超出长度部分
    解释:"zzzzzzzzzzzzz"-->“zzzzz...”参数:对应账号作用:在数据库中搜索并设置对应账号的用户名,省略处理用户名的过长部分头文件:#include<qsqlquery.h>函数定义:QStringgetUserName(constQString&account);voidsetUserName();源代码:QStringUseMySQL::g......
  • [AirTest] airtest-selenium做Web自动化测试(上手实操三)&& airtest 代码改写成用 Djang
            经过了实操二的 测试用例复用(循环) 的实现,现对其进行改造提升优化。        实操一让我们知道了如何做单个测试用例的 自动化测试,实操二让我们知道了如何做多个测试用例的 自动化测试,那么,如何把实操二写的脚本变成更方便的测试脚本,让多个测试用例......
  • 使用 Django 构建支持 Kubernetes API 测试连接的 POST 接口
    文章目录使用Django构建支持KubernetesAPI测试连接的POST接口功能需求使用kubectl获取Token命令解析输出示例完整代码实现KubernetesAPI客户端类功能说明Django接口视图关键点解析路由配置接口测试请求示例响应结果成功错误优化建议1.安全性2.错误......
  • 记一次公网接口访问异常(dns异常)
    背景接项目经理反馈业务不好使,研发通过应用日志发现是访问互联网的某个接口请求失败。我接力继续排查分析1.拿接口到互联网前置机curl一下这边用百度代替curlhttps://www.baidu.com-s-w'\n状态码:%{http_code}\nhttp连接耗时:%{http_connect}\n域名解释耗时:%{time_na......
  • asp.net core中webapi接口的动作与参数
    一、在asp.netcore的webapi可以指定接口的action动作类型,动作特性主要有Get,Post,Put,Delete,Head,Options,Patch,Trace,其中Get,Post,Delete是比较常用的1、Get:通常用于数据查询,请求参数一般是地址栏上的QueryString获取,请求参数默认为[FromQuery],该动作属于幂等操作①。......
  • 【以太网接口芯片----CH394 Webserver应用】使用以太网接口芯片CH394芯片搭建Webserve
    一、简介:本文会基于沁恒微电子最新的以太网协议栈芯片CH394来做一个远程Web浏览器控制的示例(主控芯片为CH32V307,SPI接口),简单演示通过以太网进行参数修改、数据传输、远程控制。相较于之前的CH395芯片,CH394的通信速度更快、功耗更低、外围电路更精简,因此选择CH394芯片来拓展需......
  • 【扩展你的思路】JAVA在不修改接口的情况下传递参数的方法
    JAVA在不修改接口的情况下传递参数的方法在进行二次开发或修改已有代码时,有时需要传递额外的参数给某个方法,但又不希望修改原有接口,因为这样可能会影响到其他调用该方法的地方。本文将介绍一种常见且有效的方法,即使用ThreadLocal来传递参数,并探讨其优缺点。背景假设我......
  • jmeter测试udp接口详解
    jmeter测试udp广播(jmeter发送udp)jmeter测试udp广播(jmeter接收udp)先下载安装第三方插件下载链接:https://jmeter-plugins.org/install/Install/ 将下载的插件放在lib/ext目录里面 然后重启jmeter,如下图操作:          此时可以看到lib/ext目录里面多了......
  • 身份证OCR 识别 API 接口用如何Java调用
    身份证OCR识别API接口是一种强大的技术工具,它利用图像识别技术,能够自动解析身份证上的文字和数字,并将其转化为结构化数据。这种接口可以方便地集成到各类APP和系统中,为用户带来高效、准确的身份证信息识别体验。以下是身份证OCR识别API接口用如何Java调用的示例代码:......
  • 实现RequestInterceptor接口的两个拦截器,其中一个apply方法没有执行
    已经在config类中,对两个拦截器进行定义了。但是在打断点的时候,TokenInterceptor中重写的apply()方法没有被执行。@Configuration@Slf4jpublicclassFeginConfig{@Bean@Order(1)publicTokenInterceptortokenInterceptor(){log.info("TokenInterce......