javascript - 有没有一种方法可以在Javascript中编写像toString这样的Java方法,如果在方法上调用该方法会打印该方法的源代码?

标签 javascript java compilation

抱歉,如果这是一个微不足道的问题,所以如果已经有人问过这个问题,请引导我回答这个问题。

我知道 javascript 中的 tostring 方法,如果在函数上调用,将打印源代码(更多信息: link )。在 Java 中是否可以做同样的事情?

因此,如果我有以下恒等函数定义:

public class class1 {

    int f1(int x){
        return  x;
    }
}

主要功能如下:

class Main {
    public static void main(String args[]) {

        class1 c1 = new class1();

        ???? 

    }
}

我可以用什么东西来代替“???”吗?会打印类似

int f1(int x){
    return  x;
}

最佳答案

免责声明:我不是 Java 或任何相关编程语言的专家。不过,我确实知道如何在网上查找信息。

这个概念在 Java 中似乎不太可行。开始:

JavaScript is an interpreted language, not a compiled language. A program such as C++ or Java needs to be compiled before it is run. The source code is passed through a program called a compiler, which translates it into bytecode that the machine understands and can execute. In contrast, JavaScript has no compilation step. Instead, an interpreter in the browser reads over the JavaScript code, interprets each line, and runs it. More modern browsers use a technology known as Just-In-Time (JIT) compilation, which compiles JavaScript to executable bytecode just as it is about to run.

基本上,JavaScript 的优点是直接从文件中读取源代码并即时执行。出于多种原因(包括安全性),Java 等编译语言默认不会内置此类功能。应用程序应该能够在尽可能不让黑客访问其源代码的情况下运行。

已经尝试过各种形式的您感兴趣的事情,但两种最简单的方法似乎是

  1. 逐行打印原始.java文件
  2. 存储对整个代码或所需方法的字符串引用。

似乎也可以打印方法名称,但不能打印主体。

除此之外,您从已编译、正在运行的 java 程序中可能获得的唯一信息是字节码,这需要反编译器才能理解其背后的源代码。

您可以通过此处的一些链接继续阅读:

How do I print the method body reflectively?

Save a method into a variable, java 8

View a method's implementation (method body) using Java Reflection

关于javascript - 有没有一种方法可以在Javascript中编写像toString这样的Java方法,如果在方法上调用该方法会打印该方法的源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54858520/

相关文章:

java - 使用 DatagramSockets 的迭代 DNS 客户端

c - 为什么定义的函数要放在重定位表中

javascript - ReactJs Component Unexpected Token 错误条件

javascript - 奇怪的 JavaScript 行为

javascript - 使用在 Webpack 构建中公开全局变量的脚本

java - NoClassDefFoundError : com. opencsv.CSVWriter

java - Jave 如何防止并发类初始化发生?

javascript - 如何在弹出页面中访问父页面 GridView 内的文本框?

c++ - 如何通过拷贝构造函数区分一个类中的每个变量

c++ - 编译器推断模板参数