aKi*_*leR -5 java rebuild var java-10
请参考以下示例.
====之前====
---- A.java ---
var userAccounts = userService.getUserAccounts();
Run Code Online (Sandbox Code Playgroud)
--- B.java
class UserService {
public OldUserAccounts getUserAccounts();
}
Run Code Online (Sandbox Code Playgroud)
==== ====之后
---- A.java ---
var userAccounts = userService.getUserAccounts();
Run Code Online (Sandbox Code Playgroud)
--- B.java
class UserService {
public NewUserAccounts getUserAccounts();
}
Run Code Online (Sandbox Code Playgroud)
尽管A.java发生了变化,但B.java源文件没有变化.B.class文件的信息有'userAccounts'变量类型是'OldUserAccounts'不是吗?如果我将修改后的源文件应用于真实服务器.'var'会产生一个bug吗?
注意: 我知道这是一个不好的做法,即使没有var更改也可能是字节码不兼容的.在我的案例中,重建整个项目的想法并不好.成本太高了
任何想法或解决方法??
尽管A.java发生了变化,但B.java源文件没有变化.
你的意思是A.java即使改变了也没有B.java变化.
是的,如果你改变了B.java,你必须重新编译A.java,这取决于它.var在这方面没有任何改变,无论如何你需要这样做.唯一的区别是,A.java如果您使用var,源代码不会改变,如果您不使用,则会改变.无论如何都需要重新编译.
大多数程序员只会将修改后的源文件应用于真实服务器.
引文需要.
非玩具项目的大多数程序员使用适当的构建工具.使用适当的构建工具将确保您根据需要重新编译和重新部署.如果你正在挑选和重新部署你重新编译和重新部署的内容,而不是总是在它们的依赖项发生变化时重新编译类,那么从Java 10开始你就会遇到问题 - 你已经在Java 9及更早版本中遇到了问题.您将进行不兼容的更改B.java,无法识别您需要修改和重建A.java,并且遇到运行时不兼容问题.
var不是您描述的场景中的问题.项目工具是.
但var完全是可选的.如果您认为它会给您的项目带来麻烦,请不要使用它.