java - 在 GWT 中将最终类变量设为静态

标签 java gwt

在 Java 中,当编译时为 final 字段分配常量值时,将其声明为 static 通常是有意义的。根据相关PMD规则节省了开销。

对于生成的 Javascript 代码,在 GWT 中这样做有什么意义或区别吗?

最佳答案

如果变量在声明为final时被赋值,那么是的,static有一定的意义,但在某些情况下它不应该是static的:

public MyClassWithFinal {
    private final String finalVar;
    public MyClassWithFinal(String name) {
         this.finalVar = name;
    }
}

另一种情况:如果实例 var 不是字符串或数字常量,但需要运行构造函数,则该构造函数每次调用时都可能产生副作用,因此仅运行一次与多次运行不同。

也就是说,GWT 将内联/实习常量字符串值,因此如果您有多个字符串字段都分配给相同的值,GWT 可能会检测到并将它们全部提升为静态。

public final String constant = "Some Constant that really ought to be static";

GWT 会注意到,除非声明,否则永远不会分配该字段,甚至可能会删除该字段本身。

最好的规则是从最好的(即最易读、最可维护、最高效)Java 代码开始,并且仅在 GWT 需要特定内容的情况下才打破该代码。这不是其中一种情况:无论您如何编写,编译器都应该执行相同的基本优化。

关于java - 在 GWT 中将最终类变量设为静态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9686062/

相关文章:

java - 如何使用jSTL、servlet在jsp中显示输出

java - 如何从 JSP 访问 JavaScript 中的 Java 对象

asp.net - 是否有相当于 YUI、ASP.NET 或 Google DataSource 的 jQuery?

java - 我可以使用 Java 6 Annotation Processors/JSR 269 在 Maven 中为 GWT 生成代码吗?

java - java属性文件中的大括号是什么意思?

Java 正则表达式 : unexpected char: '('

java - 由 : java.net.MalformedURLException : no protocol:/jsp/error. jsp 引起

gwt - GWT 中的安全 JSON 解析?

GWT/MVP : detecting change events in a table with proper MVP pattern

java - GWT 电子表格单元格