Frage

suchte ich im Internet nach wie srictfp in Scala erzwingen, konnte aber jeden Hinweis auf sie nicht finden. Es gibt einige Leute darüber beschweren, aber echte Lösungen nicht gefunden werden kann. Es gibt einen Bugtracker-Eintrag über sie, die fast zwei Jahre alt ist. Wie es scheint, gibt es auf dem Weg für Abhilfen Ich suche keine elegante Lösung ist.

Meine aktuelle Idee ist, die sachgemäße Methode Flag ACC_STRICT in dem erzeugten Bytecode von mir irgendwie zu setzen, aber ich habe keine Ahnung, was die beste Lösung, dies zu tun wäre. Ein Scala Compiler Plugin in den Sinn kommt oder nur Hacker-Flags in einem Hex-Editor. Vielleicht konfrontiert jemand die gleiche Herausforderung und sagen Sie mir, kann seine Lösung?

War es hilfreich?

Lösung

Sie könnten einen Post-Prozessor in Ihrem Build-Prozess hinzufügen, dass der strictfp Modifikator zu der generierten Klasse hinzufügen würde (das heißt den ACC_STRICT-Flags, wie Sie sagen).

Sie können eine solche Postprozessor implementieren mit Javassist zum Beispiel. Dies könnte wie folgt aussehen:

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")));

Sie würden dann so zu konfigurieren, finden müssen, die Klassen / Methode Notwendigkeit, diese Art und Weise modifiziert werden.

Andere Tipps

Scala hat eine strictfp Anmerkung jetzt:

@strictfp
def f() = …
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top