如何通过IDEA看Java源码

  • Post author:
  • Post category:java

通过程序看源码也叫反编译,有很多辅助软件可以做,这里介绍使用 IDEA 查看自己所编写代码的源码的方式。

  1. 将写的程序生成的字节码文件(class文件,前面的笔记介绍过)放到与该程序相同目录下。class文件一般存放在一个名为”out-production”的文件夹下,在”Project Structure”中可以找到该路径。
  2. 放在一起后在 IDEA 中,可以在该程序旁边看到一个带有 01 字样的同名 class 文件
  3. 直接双击该 class 文件便可打开,这就是该程序的源码。

图示:

1.从 File -> Project Structure 找到 class 文件路径。

在这里插入图片描述

2.再将找的 class 文件复制到该程序的文件目录下。

在这里插入图片描述

3.在 IDEA 中便可查看该 class 文件。

在这里插入图片描述

package 流程控制;

public class Demo08 {
    public static void main(String[] args) {
        String name = "Java";
        switch (name){
            case "C":
                System.out.println("C");
                break;
            case "C++":
                System.out.println("C++");
                break;
            case "Java":
                System.out.println("Java大法好");
                break;
            case "Python":
                System.out.println("Python");
                break;
            case "Go":
                System.out.println("Go");
                break;
            default:
                System.out.println("Others");
        }
    }
}

源码:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package 流程控制;

public class Demo08 {
    public Demo08() {
    }

    public static void main(String[] args) {
        String name = "Java";
        byte var3 = -1;
        switch(name.hashCode()) {
        case -1889329924:
            if (name.equals("Python")) {
                var3 = 3;
            }
            break;
        case 67:
            if (name.equals("C")) {
                var3 = 0;
            }
            break;
        case 2312:
            if (name.equals("Go")) {
                var3 = 4;
            }
            break;
        case 65763:
            if (name.equals("C++")) {
                var3 = 1;
            }
            break;
        case 2301506:
            if (name.equals("Java")) {
                var3 = 2;
            }
        }

        switch(var3) {
        case 0:
            System.out.println("C");
            break;
        case 1:
            System.out.println("C++");
            break;
        case 2:
            System.out.println("Java大法好");
            break;
        case 3:
            System.out.println("Python");
            break;
        case 4:
            System.out.println("Go");
            break;
        default:
            System.out.println("Others");
        }

    }
}

版权声明:本文为yangen2018原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。