通过反编译字节码来理解 Java 枚举

枚举的声明很简单, 像 enum Gender { Male, Female }, 其余事情就是 Java 编译器帮我们干的了,所以 enum 也就是一块语法糖。有了枚举确实是很方便,避免了传统常量的无范围性。那么编译器到底在后面做了什么呢?以及理解了这个之后我们可以怎么去使用 Java 的枚举, 下面就从这个例子说起:

public enum Gender {
    Male,
    Female
}

把上面的编译成 Gender.class, 然后用  javap -c Gender 反编译出来就是

阅读全文

原文地址:http://blog.51cto.com/unmi/2123354

时间: 2024-11-05 15:48:20

通过反编译字节码来理解 Java 枚举的相关文章

IDEA设置External Tools之Javap反编译字节码

通过Jdk的命令javap可以反编译查看字节码,但是在使用idea的时候一直用命令行去操作不太好操作,而且因为idea会把class码 放在target里面,经常会忘记切换目录.这个时候idea的External Tools就派上用场了. 具体操作如下,先到idea的设置界面 进入Tools >  External Tools中 添加工具,分别设置program,argument等,其中arguments中是javap的参数,具体的参数信息可以去看下help信息 之后在打开的java文件界面右键

apk应用的反编译和源码的生成

对于反编译一直持有无所谓有或无的态度,经过昨天一下午的尝试,也有了点心得和体会: 先给大家看看编译的过程和我们反编译的过程概图吧: 如下是反编译工具的根目录结构: 三个文件夹也实际上是以下三个步骤的体现: (不知道大家发现没,我把三个目录名字都改了一下,apktool即为处理apk的工具:dex2jar即就是将dex文件处理为jar包的工具:jar2gui即就是我们将jar包内的class转换为源码的gui界面以供大家参考的工具) setp 1: 在apktool里: 打开dos框(cmd进入然

深入理解 Java 枚举

目录   1. 简介  2. 枚举的本质  3. 枚举的方法  4. 枚举的特性  5. 枚举的应用  6. 枚举工具类  7. 小结  8. 参考资料 ?? 本文已归档到:「javacore」 ?? 本文中的示例代码已归档到:「javacore」 1. 简介 enum 的全称为 enumeration, 是 JDK5 中引入的特性. 在 Java 中,被 enum 关键字修饰的类型就是枚举类型.形式如下: enum ColorEn { RED, GREEN, BLUE } 枚举的好处:可以将常

如何通过反编译工具与插件 查看java *.class 文件源码

Java Decompiler[java 反编译]:开发了反编译工具,可以方便查看*.class 文件源码.下面介绍几种查看源码的方式:工具&插件 1.JD-GUI JD-GUI  是显示java 源代码 *.class文件的 图形界面工具.可以在这里下载:JD-GUI-DownLoad 下载下来后,打开该工具,直接将jar包 拖拽到 显示窗口即可查看源代码. 举例:通过 jd-gui.exe 工具 查看 xUtils-2.6.14.jar 包 源码: 但是,一般开发用的是IDE(Integra

Android对apk源码的修改--反编译+源码修改+重新打包+签名【附HelloWorld的修改实例】

近期遇到了需要修改apk源码的问题,于是上网查了下相关资料,编写了HelloWorld进行修改看看可行性,经过实验证明此方案可行,并且后来也成功用这个方法对目标apk进行了修改,只不过需要修改的部分比HelloWorld复杂些,但是只要了解下smali也能进行相关的修改,下面讲下具体的步骤,文中所用到的资源会在文章的结尾给出,感兴趣的可以下载试试. 首先介绍下要用到的工具: jdk:这个不用多说了 baksmali:把classes.dex转为为smali文件的工具 dex2jar:classe

反编译源码

apk不会造假,Google签名的,如果想造假就得破解Google签名. 1. 首先直接解压一个apk,解压之后拷贝出里面classes.dex文件待用. 2. 下载dex2jar工具,解压之后打开cmd,进入解压目录,运行命令: d2j-dex2jar.bat classes.dex(上一步解压的) jarpath(反编译dex后的文件目录) example: d2j-dex2jar.bat c:\user\qting\classes.dex c:\user\qting\ 反编译之后,会得到一

深入理解Java枚举类型(enum)

[版权申明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/71333103 出自[zejian的博客] 关联文章: 理解Java位运算 深入理解Java类型信息(Class对象)与反射机制 本篇主要是深入对Java中枚举类型进行分析,主要内容如下: 理解枚举类型 枚举的定义 枚举实现原理 枚举的常见方法 Enum抽象类常见方法 编译器生成的Values方法与ValueOf方法 枚举与Clas

字节码学院之Java socket 控制台聊天室

学了个把月基础,终于写出了一个双工通信的控制台版本的聊天室了,废话不说啦,直接上代码:服务端代码 package com.zijiemaedu.socketdemo; import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; /** * @author: Mr-zhang * @create: 2019-05-30 09:48 * @emall: [email

在Myeclipse下查看Java字节码指令信息

在实际项目开发中,有时为了了解Java编译器内部的一些工作,需要查看Java文件对应的具体的字节码指令集,这里提供两种方式供参考. 一.使用javap命令 javap是JDK提供的一个原生工具,它可以反汇编class文件得到对应的字节码信息,通过调节命令参数,可以获取类的package.fileds和methods等的字节码信息,用的最多的参数也就是-verbose了: 二.Bytecode Outline插件 javap固然可以实现反编译字节码的效果,但是每次都要在命令行中执行,显得有点麻烦,