Java 10 'var' 将在没有完全重建的情况下产生错误
Java 10 'var' will spawn a bug without full rebuild
请参考下面的例子。
====之前====
----A.java---
var userAccounts = userService.getUserAccounts();
--- B.java
class UserService {
public OldUserAccounts getUserAccounts();
}
====之后====
----A.java---
var userAccounts = userService.getUserAccounts();
--- B.java
class UserService {
public NewUserAccounts getUserAccounts();
}
B.java 源文件没有变化,尽管 A.java 发生了变化。
B.class 文件的信息有 'userAccounts' 变量类型是 'OldUserAccounts'
你不是吗?
如果我将修改后的源文件应用到真实服务器。
'var' 会产生错误吗?
注意: 我知道这是一个不好的做法,即使没有 var 更改也可能与字节码不兼容。重建整个项目的想法对我来说并不好。
成本太高了
有什么想法或解决方法吗??
There is no change in the B.java source file although A.java changed.
你的意思是 A.java
没有变化,即使 B.java
改变了。
是的,如果改了B.java
,就必须重新编译A.java
,这就看情况了。 var
在这方面没有任何改变,无论如何你都需要这样做。唯一的区别是,如果您使用 var
,A.java
中的源代码不会更改,如果您不使用,则会更改。它需要重新编译 regardless.
Most programmers will only apply modified source files to the real server.
需要引用。
non-toy 项目中的大多数程序员都使用适当的构建工具。使用适当的构建工具将确保您根据需要重新编译和重新部署。如果您 picking-and-choosing 重新编译和重新部署,而不是总是重新编译 类 当它们的依赖关系发生变化时,您确实会在 Java 10 时遇到问题 - 而且您已经遇到问题Java 9 及更早版本。您 将 对 B.java
进行不兼容的更改,无法识别您需要修改和重建 A.java
,并遇到运行时不兼容问题。
var
不是您描述的场景中的问题。项目工具是。
但是 var
完全是可选的。如果您认为它会给您的项目带来麻烦,请不要使用它。
请参考下面的例子。
====之前====
----A.java---
var userAccounts = userService.getUserAccounts();
--- B.java
class UserService {
public OldUserAccounts getUserAccounts();
}
====之后====
----A.java---
var userAccounts = userService.getUserAccounts();
--- B.java
class UserService {
public NewUserAccounts getUserAccounts();
}
B.java 源文件没有变化,尽管 A.java 发生了变化。 B.class 文件的信息有 'userAccounts' 变量类型是 'OldUserAccounts' 你不是吗? 如果我将修改后的源文件应用到真实服务器。 'var' 会产生错误吗?
注意: 我知道这是一个不好的做法,即使没有 var 更改也可能与字节码不兼容。重建整个项目的想法对我来说并不好。 成本太高了
有什么想法或解决方法吗??
There is no change in the B.java source file although A.java changed.
你的意思是 A.java
没有变化,即使 B.java
改变了。
是的,如果改了B.java
,就必须重新编译A.java
,这就看情况了。 var
在这方面没有任何改变,无论如何你都需要这样做。唯一的区别是,如果您使用 var
,A.java
中的源代码不会更改,如果您不使用,则会更改。它需要重新编译 regardless.
Most programmers will only apply modified source files to the real server.
需要引用。
non-toy 项目中的大多数程序员都使用适当的构建工具。使用适当的构建工具将确保您根据需要重新编译和重新部署。如果您 picking-and-choosing 重新编译和重新部署,而不是总是重新编译 类 当它们的依赖关系发生变化时,您确实会在 Java 10 时遇到问题 - 而且您已经遇到问题Java 9 及更早版本。您 将 对 B.java
进行不兼容的更改,无法识别您需要修改和重建 A.java
,并遇到运行时不兼容问题。
var
不是您描述的场景中的问题。项目工具是。
但是 var
完全是可选的。如果您认为它会给您的项目带来麻烦,请不要使用它。