Как использовать ключевое слово 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 нельзя применять явно к абстрактным методам, переменным или конструкторам.

Другие вопросы по тегам