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
?