質問
私はScalaでsrictfp
を強制する方法については、ウェブを検索するが、それのいずれかのヒントを見つけることができませんでした。そこに文句を何人かの人々がありますが、本当の解決策を見つけることができません。ほぼ二歳それについてバグトラッカーエントリではあります。私が回避策を探している途中で、それにはエレガントな修正が存在しないようだ通ります。
私の現在の考えは何とか自分で生成されたバイトコードでappropiate方法フラグACC_STRICT
を設定することですが、私はそうするための最善の解決策になるかわかりません。 A Scalaのコンパイラプラグインは心に来るか、単にバイナリエディタでフラグをハッキング。たぶん誰かが同じ課題に直面していましたし、私に彼または彼女の解決策を伝えることができますか?
解決
あなたは(あなたが言うように、すなわち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")));
あなたはその後、どのクラス/メソッドをこのように変更する必要があるのconfigureへの道を見つけなければならないでしょう。
他のヒント
スカラ今strictfp
注釈があります:
@strictfp
def f() = …
所属していません StackOverflow