问题标签 [compile-static]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8482 浏览

groovy - 如果我也在使用 Java 7,我应该使用 Groovy 的 @CompileStatic

我已经阅读了“Groovy 2.0 中的新增功能”,但对于何时使用 @CompileStatic 感到有些困惑。文章提到,@CompileStatic注释是为无法利用 Java7 的调用动态部分的开发人员添加的。

因此,如果无法在 JDK 7 上运行,寻求性能改进的开发人员不会在 Groovy 2.0 中看到太多变化。幸运的是,Groovy 开发团队认为这些开发人员可以通过允许类型检查获得有趣的性能提升以及其他优势静态编译的代码。

我的问题是,如果我使用的是 JDK 7 并按照说明添加--indy标志,是否需要添加@CompileStatic才能看到一些性能提升? 这个博客建议我这样做,但我不确定他是否正确编译,因为他是在 Eclipse 中完成的。

更新:以下是运行斐波那契代码的不同排列时的统计数据。

注意:这个问题现在似乎有点令人困惑,因为我知道这些功能是独立的。由于问题的基础是围绕使我认为这两个功能相关的注释中的混淆,我认为不更改问题措辞并允许解释差异的公认答案是有意义的。

0 投票
1 回答
819 浏览

groovy - Groovy 2.1.0 带有@CompileStatic 的 switch-case-break 语句的奇怪行为

我是新手 groovy 程序员,我遇到了带有静态编译(@CompileStatic注释)的 switch-case-break 语句的奇怪行为。似乎breaks被忽略了。
这是一个错误还是我在阅读文档时错过了一些东西。

环境:

测试用例:

输出:

第二个测试:只是评论@CompileStatic

一切正常:

0 投票
1 回答
223 浏览

groovy - @CompileStatic:可以进行自动类型转换吗?

下面的代码可以编译@CompileStatic吗?

用法:

目前存在编译错误:

某些东西的类型是已知的,switch-case所以instanceof演员可以自动完成,不是吗?也许我只是提供了一个过于简单的示例,并且实现所请求的功能不适合更复杂的代码。

0 投票
1 回答
295 浏览

json - Grails 2.5.0 静态编译、控制器和 Grails 特性

我正在测试 Grails 静态编译,特别是 GrailsCompileStatic。该文档仅限于解释不支持哪些 Grails 动态特性。我的测试控制器非常简单,但我已经遇到了问题。

编译应用程序时出现两个编译时错误。第一个关于对象上缺少JSON的属性,第二个关于闭包中request缺少方法的错误。jsonwithFormat

在我看来,我要么做错了什么,要么GrailsCompileStatic不能使用这些功能?

0 投票
0 回答
44 浏览

windows - 尝试使用命令 configure -static 编译 Qt 给我一个错误

我正在尝试在我的 Windows 8 上编译 Qt 5.4.2,但它收到了以下消息:

在此处输入图像描述

什么意思:-plataform 作为行参数或设置 QMAKESPEC

0 投票
0 回答
128 浏览

groovy - 使用 @CompileStatic 时从另一个调用闭包

当从@CompileStatic 下的另一个闭包隐式调用闭包时,调用者会以某种方式进入递归循环。你能发现代码的问题,还是 Groovy 的问题:

[Groovy 版本:2.4.5]

注意:这个 SO question讨论了一个类似的问题,但与之相关的 Groovy 问题说它已被修复。

0 投票
1 回答
82 浏览

groovy - 在闭包内引用 Map 类型的属性时出错

在下面的代码段中,为什么编译器会抱怨 map 属性而不是其他类型的属性:

this如果我理解正确的话,闭包内部应该是指封闭类的实例。

注意:Groovy 版本:2.4.5

0 投票
0 回答
152 浏览

java - 配置 GrovyClassLoader 以遵循 @CompileStatic 注释

我有一个自定义 Java 库,它实现了在 Groovy 中实现并通过配置文件提供的业务规则。我使用 GroovyClassLoader 编译业务规则并返回所需的类,如下所示:

我的配置文件中嵌入的业务规则在类级别使用@CompileStatic 注释进行了注释。

如何让我的 GroovyClassLoader 配置为进行静态编译?

我猜它涉及使用 CompilerConfiguration 创建 GroovyClassLoader(即 GroovyClassLoader(ClassLoader loader, CompilerConfiguration config),但我很难找到配置 CompilerConfiguration 来完成此操作的特定信息。

谁能提供一个关于如何配置 GroovyClassLoader 进行静态编译的示例?

谢谢!

0 投票
1 回答
108 浏览

groovy - 修复 Groovy 静态类型中的这个漏洞的机会

当我运行以下 Groovy 代码片段时,它会按预期打印“,a,b,c”:

现在我将 inject 中的第一个参数从空字符串更改为数字 0:

这将不起作用并产生异常“无法将具有类'java.lang.String'的对象'0,a'转换为类'java.lang.Number'”。问题是编译器没有抱怨。我在 Scala 和 Kotlin(其中注入称为折叠)中尝试了这个,相应的编译器按预期抱怨不匹配。Java8中的对应物也无法编译(它说找到int,需要:java.lang.String):

现在的问题是这是否可以在 Groovy 中修复,或者这是否是一个普遍的问题,因为稍后将静态类型引入该语言。

0 投票
0 回答
483 浏览

java - 嵌套泛型的 Groovy 静态编译失败

请检查下面的示例 JUnit 类:

函数functionWithoutPairTestfunctionWithPair1Test编译成功,但functionWithPair2Test失败并出现以下错误:

看起来 groovy 不喜欢嵌套泛型。就我而言,动态编译不是一个选项,严格的类型检查是一项硬性要求。

有没有人遇到类似的错误并有建议?