JLS strictfp Интерфейсы определяет, что:
Эффект модификатора strictfp состоит в том, чтобы сделать все float или double выражения в объявлении интерфейса явно FP-строгими (§15.4).
Это означает, что все вложенные типы, объявленные в интерфейсе, неявно строго определены.
Эффект модификатора strictfp состоит в том, чтобы сделать все float или double выражения в объявлении интерфейса явно FP-строгими (§15.4).
Это означает, что все методы, объявленные в интерфейсе, и все вложенные типы, объявленные в интерфейсе, неявно строго определены.
Из этих двух абзацев нет указания на поведение strictfp при реализации/расширении интерфейса/класса, объявленного с помощью модификатора strictfp.
После поиска я нашел хорошее объяснение использования ключевого слова strictfp Использовать модификатор strictfp для согласования вычислений с плавающей запятой между платформами, и он указывает, что:
Строгое поведение не наследуется подклассом, который расширяет FP-строгий суперкласс. Метод переопределения может независимо выбирать FP-строгий, если переопределенный метод не является, или наоборот.
Я тестировал поведение ключевого слова strictfp при расширении класса, объявленного с ключевым словом strictfp, и это правда: поведение strictfp не наследуется классами, расширяющими класс, но проблема заключается в реализации интерфейса, объявленного с помощью strictfp Неверное ключевое слово: поведение strictfp не наследуется классами, реализующими интерфейс.
Может ли кто-нибудь объяснить мне правильное поведение strictfp с реализацией/расширением интерфейса/класса, объявленного с помощью модификатора strictfp?
