这是可能在Java中访问方法“反思”的源代码?(It's possible in Java

2019-07-23 10:14发布

恐怕答案是否定的,但也许你一个让我吃惊。

谢谢。

编辑1:我知道,这个问题并没有多大意义,但我认为这一点是理解和遗憾的是,答案是否定的。 无论如何,我改变了这个问题加上引号的词“反思”的冠军,我会尝试更好地解释我的意图,以防万一。

我有一个类型,是其中有一些已知方法的一些抽象类的子类的实例。 我想,在运行时,与实际执行的实例类型,方法之一的源代码的字符串。

我认为这是值得指出的是,该实例的实际类型可以是anonimous内部类....还可以为源代码的“反编译”版本已足够好了。 我想要得到的光源的方法,大多数时候,只有一条线....

谢谢。

Answer 1:

至于其他的指出:没有。

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

如果我猜的话,这种情况发生在对象,在继承树的rootobject。 您可以使用反编译器编译的类文件,并使用一个检查。 但是你不能访问源代码就像一个字符串或任何类似。

想想看:如果你有编译为JVM的Scala代码,你不能得到阶码回任。 而且你不能得到Java的代码。

有没有你想这样做任何特别的原因吗? 愿你有,你可以尝试实现自己的目标,不管它可能是任何其他方式?

问候



Answer 2:

不,你不能。 它有点不合逻辑为好。



Answer 3:

我不认为如此。 当.java被编译成为一个.class ; 据我所知Java没有内置的反编译器把这一.class回成.java 。 所有可运行的应用程序知道是.class文件。



文章来源: It's possible in Java to access the source code of a method “reflectively”?