我有一个程序,其中有一些Java类可用。有可能对它们进行分解吗?是否可以修改类的源代码并重新编译它,而不需要所有其他的.class文件?
例如,假设我有一个dog.class文件,它实现了animal.class中定义的动物子类。
dog.java重新编译animal.class吗?dog.java重新编译animal.java吗?我不是Java开发人员,所以如果我没有任何意义的话,请纠正我。
发布于 2009-06-13 07:48:33
一般情况下,不。但是,您可以为那些缺少的类创建存根(仅用于编译),然后在有它们的时候替换它们。
发布于 2009-06-13 08:00:29
如果您可以访问已编译的类(在示例中是animal.class),那么可以重新编译子类(dog.java) (但是,您不需要访问超类的源代码)。
如果您甚至无法访问已编译的超类,那么如果您知道相关的方法(从子类中实现或调用的方法),那么您就可以创建超类的存根,只为了让子类编译。
然而,在某一时刻,您将需要编译超类的真正版本才能让您的代码正确执行.
发布于 2009-06-13 08:18:06
为了补充其他答案,您可能需要注意的一个方面是,如果您的类具有复杂的结构,反编译器可能无法将其解压缩到“可重新编译”的状态,您可能需要手动编辑它。
https://stackoverflow.com/questions/990248
复制相似问题