我可以替换已编译的Java项目中的类文件吗?

Jan*_*eks 5 java

这可能并且应该是一个已经被问过很多次并回答过的问题,但是我只是找不到答案。

如果我在服务器上运行了已编译的应用程序,是否可以在本地计算机上编译该应用程序,并将我在本地计算机上编译的类与服务器上的类交换?

换句话说,我可以替换已编制,是在服务器端,有文件的文件几乎相同的已编译的,并且所在,我的本地机器上?

由于服务器端的版本在其他文件中具有一些硬编码的连接,并且我不知道所有位置,因此我宁愿只交换我需要的一个文件,而不是对整个应用程序进行重新编译。

jmo*_*253 5

问题的答案是肯定的,您可以替换一个类文件,但是它有点复杂,因为您必须确保没有其他依赖项发生变化。

例如,如果要编译的类涉及更改其他类中使用的方法的方法签名,则也需要替换这些签名。只要不更改公共方法,受保护方法或默认方法的方法签名,就可以了。

附带说明一下,如果您经常这样做,那么您会很快意识到为什么将对象经常传递给方法而不是单个参数的原因。

public MyObject getObject(MyObject2 mySecondObject)
Run Code Online (Sandbox Code Playgroud)

public MyObject getObject(int a, int b, int c)
Run Code Online (Sandbox Code Playgroud)

当您需要向传递给方法的对象添加新属性时,方法签名不会更改,但是当您在方法签名本身上添加或删除参数时,它会在所有依赖项上创建链式反应,要求您编译并替换这些类文件。

最后要强调的一点是,值得注意的是,您对私有方法或私有变量甚至是方法的定义所做的更改都不会影响其他类文件。唯一重要的是,您要保持您的方法与其他类的约定,因为输入和输出始终采用和返回相同的数据类型。

这突出了封装实例变量的重要性以及如何从其他类中隐藏这些依赖项。