Как использовать ключевое слово strictfp в методах?
Я знаю что strictfp
Ключевое слово может быть применено к методам, классам и интерфейсам.
strictfp class A{} //Accept
strictfp interface M{} //Accept
class B{
strictfp A(){} // Not Accept
}
3 ответа
Это может также использоваться на методах. но не на конструкторах. и в вашем примере вы применили его к конструктору, а не к методу.
Но после применения к классу он будет автоматически применяться к статическим блокам и блокам экземпляра, всем переменным класса, всем конструкторам
Классы
Вы можете явно объявить класс strictfp И методы в этом классе явно строгие, но НЕ переменные-члены, например
// Compiles Fine
strictfp class A {strictfp void mA(){ } int i=0; }
// Compiler Error because of declaring i variable strictfp
strictfp class B {strictfp void mB(){ } strictfp int i=0;}
// Compiler Error because of declaring i variable strictfp
class C {strictfp void mC(){ } strictfp int i=0; }
Интерфейсы
Вы не можете явно объявить интерфейс strictfp И методы / члены в этом интерфейсе явно strictfp, так как это приведет к ошибке компилятора:
// Compiler Error
strictfp interface A {strictfp double mA(); static int i = 0;}
Решение: Объявите интерфейс strictfp, а НЕ методы / члены в интерфейсе. Делая это, все методы и члены в интерфейсе будут строгими
//Compiles Fine
strictfp interface A {double mA(); static int i = 0;}
Если вы применяете строгий класс к классу, он применим ко всем членам. как вы можете видеть в Javadoc:
Эффект модификатора strictfp заключается в том, чтобы все выражения с плавающей запятой или двойные выражения в объявлении класса (в том числе в инициализаторах переменных, инициализаторах экземпляров, статических инициализаторах и конструкторах) были явно строчными.
Это означает, что все методы, объявленные в классе, и все вложенные типы, объявленные в классе, являются неявно строгими.
строгое использование ключевого слова
примечание: ключевое слово strictfp нельзя применять явно к абстрактным методам, переменным или конструкторам.