是否有一种方法可以在JavaScript中编写Java方法,例如ToString,如果使用方法,该方法将打印该方法的源代



对不起,如果这是一个微不足道的问题,因此,如果已经提出要求,请引导我进入问题。

我知道JavaScript中的ToString方法,如果调用函数,将打印源代码(有关它:链接)。可以在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是一种解释的语言,而不是汇编的语言。C 或 Java 之类的程序需要在运行之前进行编译。源代码通过称为编译器的程序传递,该程序将其转换为计算机理解并可以执行的字节码。相比之下,JavaScript没有编译步骤。取而代之的是,浏览器中的解释器通过JavaScript代码读取,解释每行并运行它。更现代的浏览器使用一种称为Just-Indime(JIT)汇编的技术,该技术将JavaScript编译为可执行的字节码。

基本上,JavaScript的优点是用源代码直接从文件中读取,然后即时执行。默认情况下,诸如Java之类的语言(例如Java)将不具有此类功能,包括安全性。应用程序应能够运行,而无需允许黑客访问其源代码。

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

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

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

除此之外,您唯一能够从运行的Java程序中获得的唯一一件事是字节码,它需要一个反编译器有任何希望理解其背后源的希望。

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

如何反射打印方法?

将方法保存到变量中,Java 8

使用Java反射查看方法的实现(方法主体)

可能是的,但不是带有准备命令的微不足道的。JavaScript是一种解释的语言,其中执行环境可以以其原始形式访问源代码。这就是您可以在浏览器控制台中检查它的方式,并查看与源代码相同的变量名称。

虽然对Java的编译/解释区别是模糊的,但在执行之前肯定会进行修改。Java使用的即时编译使用的字节码可能比完全编译的二进制文件更可读,而不是源。如果运行程序无法访问源代码,则将其输出不足。在IDE中运行的调试器可以参考源中的问题;否则,您仅限于调试字节码。

这就是为什么基诺·克莱顿(Keno Clayton)提出了有关Quine计划的问题的原因,该问题旨在复制自己。此答案通过将其用作类属性来将源代码进行源代码。您可以采用类似的方法,使用预编译脚本,该脚本通过了所有方法并从其来源中制成字符串,但是结果将是笨重且可能敏感的。

最新更新