2013-06-26 10 views
6

Biorąc pod uwagę aplikację Java, która została napisana z myślą o wydajności (tj. Metody celowo nie zostały zadeklarowane jako "strictfp" w kodzie źródłowym), czy możliwe jest zezwolenie użytkownikom na uruchamianie całej aplikacji w trybie strictfp?Wymuś arytmetyczną Javę na strictfp w czasie wykonywania, używając javassist?

Wygląda na to, że prostym podejściem byłoby po prostu dodanie atrybutu "strictfp" do wszystkich metod wszystkich klas za pomocą niestandardowego programu ładującego klasy napisanego przy użyciu javassist. Byłoby to podobne do:

http://www.verious.com/qa/no-strictfp-in-scala-workarounds/

Jednak ładowarka klasa musiałaby dodać atrybut strictpf do wszystkich metod klasowych we wniosku, w tym prywatnych. (Aplikacja jest po prostu zbyt duże i złożone, aby wyraźnie wymienić wszystkich możliwych metod, które mogłyby requre atrybut strictfp.)

Odbicie API w javassist wydaje się nie obsługuje wyświetlania prywatnych metod:

http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/html/javassist/CtClass.html#getMethods()

Czy to, co chcę robić w javassist (lub w ogóle za pomocą niestandardowego podejścia do ładowania klas)?

+0

Czy próbowałeś 'getDeclaredBehaviors()'? – Antimony

Odpowiedz

Powiązane problemy