java - 在 Java 中可以访问方法 "reflectively"的源代码吗?

标签 java reflection

恐怕答案是否定的,但也许你们中的一个让我感到惊讶。

谢谢。

编辑 1: 我知道这个问题没有多大意义,但我认为这一点已被理解,遗憾的是,答案是否定的。无论如何,我更改了问题的标题,为“反射(reflection)”一词添加了引号,为了以防万一,我会尝试更好地解释我的意图。

我有一个类型的实例,它是具有一些已知方法的某个抽象类型的子类。我想在运行时获得一个字符串,其中包含实例类型中此类方法之一的实际实现的源代码。

我认为值得指出的是实例的实际类型可能是一个匿名内部类.... 另外,源代码的“反编译”版本就足够了。我想获取源码的方法,大多数时候只有一行....

谢谢。

最佳答案

正如其他人所指出的:不。

您可以像 JVM 一样访问类的对象及其方法等。这是唯一可能的,因为每个类在编译时都会存储有关自身及其成员的信息。

如果非要我猜的话,这发生在 Object 中,即继承树中的根对象。您可以使用反编译器反编译类文件并将其用于检查。但是您不能像 String 或任何类似的东西一样访问源代码。

想一想:如果你有为 JVM 编译的 scala 代码,你也无法取回 scala 代码。而且您无法获得 Java 代码。

您想这样做有什么特殊原因吗?您是否可以通过任何其他方式尝试实现您的目标,无论它是什么?

问候

关于java - 在 Java 中可以访问方法 "reflectively"的源代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1563081/

相关文章:

java - 用于读取 java 文档的 lib

java - 后有 2 位数字的结果。例如 :23. 65

Java 8 方法引用

c# - 如何获取具有给定属性的属性列表?

java - 如何获取类数组的 .class 值?

C# 动态类型初始化器

c# - 无法将类型 'System.Reflection.PropertyInfo' 转换为

java - 如何将 table%rowtype 的 oracle pl/sql out 参数引用为 java 中的对象

java - 我可以在没有模拟器的情况下将 android 应用程序作为独立的桌面应用程序运行吗?

java - Joda-Time——从另一个句点中删除一个句点