代码之家  ›  专栏  ›  技术社区  ›  Malax

在Scala工作区没有严格限制?

  •  8
  • Malax  · 技术社区  · 14 年前

    srictfp 但找不到任何线索。有人抱怨,但找不到真正的解决办法。有一个 bugtracker entry 差不多两年了。在我寻找解决方案的路上,似乎没有一个优雅的解决方案。

    ACC_STRICT 在我自己生成的字节码中,但我不知道什么是最好的解决方案。一个Scala编译器插件出现在脑海中,或者只是在hex编辑器中破解标志。也许有人面临同样的挑战,可以告诉我他或她的解决方案?

    2 回复  |  直到 11 年前
        1
  •  5
  •   Bruno    14 年前

    您可以在构建过程中添加一个后处理器,它将添加 strictfp 生成类的修饰符(即设置 ACC_STRICT 就像你说的那样。

    您可以使用 Javassist 例如。可能是这样的:

    CtClass clazz = ClassPool.getDefault().makeClass(
                        new FileInputStream("old/HelloWorld.class"));
    
    CtMethod method = clazz.getDeclaredMethod("testMethod");
    
    method.setModifiers(method.getModifiers() | Modifier.STRICT);
    
    clazz.detach();
    clazz.toBytecode(new DataOutputStream(new FileOutputStream(
        "new/HelloWorld.class")));
    

    然后,您必须找到一种方法来配置哪些类/方法需要这样修改。

        2
  •  0
  •   rightfold Eugene Lazutkin    9 年前

    斯卡拉有一个 strictfp 现在注释:

    @strictfp
    def f() = …
    
    推荐文章