问题标签 [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.
groovy - 如果我也在使用 Java 7,我应该使用 Groovy 的 @CompileStatic
我已经阅读了“Groovy 2.0 中的新增功能”,但对于何时使用 @CompileStatic 感到有些困惑。文章提到,@CompileStatic
注释是为无法利用 Java7 的调用动态部分的开发人员添加的。
因此,如果无法在 JDK 7 上运行,寻求性能改进的开发人员不会在 Groovy 2.0 中看到太多变化。幸运的是,Groovy 开发团队认为这些开发人员可以通过允许类型检查获得有趣的性能提升以及其他优势静态编译的代码。
我的问题是,如果我使用的是 JDK 7 并按照说明添加--indy
标志,是否需要添加@CompileStatic
才能看到一些性能提升? 这个博客建议我这样做,但我不确定他是否正确编译,因为他是在 Eclipse 中完成的。
更新:以下是运行斐波那契代码的不同排列时的统计数据。
注意:这个问题现在似乎有点令人困惑,因为我知道这些功能是独立的。由于问题的基础是围绕使我认为这两个功能相关的注释中的混淆,我认为不更改问题措辞并允许解释差异的公认答案是有意义的。
groovy - Groovy 2.1.0 带有@CompileStatic 的 switch-case-break 语句的奇怪行为
我是新手 groovy 程序员,我遇到了带有静态编译(@CompileStatic
注释)的 switch-case-break 语句的奇怪行为。似乎break
s被忽略了。
这是一个错误还是我在阅读文档时错过了一些东西。
环境:
测试用例:
输出:
第二个测试:只是评论@CompileStatic
一切正常:
groovy - @CompileStatic:可以进行自动类型转换吗?
下面的代码可以编译@CompileStatic
吗?
用法:
目前存在编译错误:
某些东西的类型是已知的,switch-case
所以instanceof
演员可以自动完成,不是吗?也许我只是提供了一个过于简单的示例,并且实现所请求的功能不适合更复杂的代码。
json - Grails 2.5.0 静态编译、控制器和 Grails 特性
我正在测试 Grails 静态编译,特别是 GrailsCompileStatic。该文档仅限于解释不支持哪些 Grails 动态特性。我的测试控制器非常简单,但我已经遇到了问题。
编译应用程序时出现两个编译时错误。第一个关于对象上缺少JSON
的属性,第二个关于闭包中request
缺少方法的错误。json
withFormat
在我看来,我要么做错了什么,要么GrailsCompileStatic
不能使用这些功能?
windows - 尝试使用命令 configure -static 编译 Qt 给我一个错误
我正在尝试在我的 Windows 8 上编译 Qt 5.4.2,但它收到了以下消息:
什么意思:-plataform 作为行参数或设置 QMAKESPEC
groovy - 使用 @CompileStatic 时从另一个调用闭包
当从@CompileStatic 下的另一个闭包隐式调用闭包时,调用者会以某种方式进入递归循环。你能发现代码的问题,还是 Groovy 的问题:
[Groovy 版本:2.4.5]
注意:这个 SO question讨论了一个类似的问题,但与之相关的 Groovy 问题说它已被修复。
groovy - 在闭包内引用 Map 类型的属性时出错
在下面的代码段中,为什么编译器会抱怨 map 属性而不是其他类型的属性:
this
如果我理解正确的话,闭包内部应该是指封闭类的实例。
注意:Groovy 版本:2.4.5
java - 配置 GrovyClassLoader 以遵循 @CompileStatic 注释
我有一个自定义 Java 库,它实现了在 Groovy 中实现并通过配置文件提供的业务规则。我使用 GroovyClassLoader 编译业务规则并返回所需的类,如下所示:
我的配置文件中嵌入的业务规则在类级别使用@CompileStatic 注释进行了注释。
如何让我的 GroovyClassLoader 配置为进行静态编译?
我猜它涉及使用 CompilerConfiguration 创建 GroovyClassLoader(即 GroovyClassLoader(ClassLoader loader, CompilerConfiguration config),但我很难找到配置 CompilerConfiguration 来完成此操作的特定信息。
谁能提供一个关于如何配置 GroovyClassLoader 进行静态编译的示例?
谢谢!
groovy - 修复 Groovy 静态类型中的这个漏洞的机会
当我运行以下 Groovy 代码片段时,它会按预期打印“,a,b,c”:
现在我将 inject 中的第一个参数从空字符串更改为数字 0:
这将不起作用并产生异常“无法将具有类'java.lang.String'的对象'0,a'转换为类'java.lang.Number'”。问题是编译器没有抱怨。我在 Scala 和 Kotlin(其中注入称为折叠)中尝试了这个,相应的编译器按预期抱怨不匹配。Java8中的对应物也无法编译(它说找到int,需要:java.lang.String):
现在的问题是这是否可以在 Groovy 中修复,或者这是否是一个普遍的问题,因为稍后将静态类型引入该语言。
java - 嵌套泛型的 Groovy 静态编译失败
请检查下面的示例 JUnit 类:
函数functionWithoutPairTest
和functionWithPair1Test
编译成功,但functionWithPair2Test
失败并出现以下错误:
看起来 groovy 不喜欢嵌套泛型。就我而言,动态编译不是一个选项,严格的类型检查是一项硬性要求。
有没有人遇到类似的错误并有建议?