Я понимаю использование аннотации @Native
.
Указывает, что поле, определяющее постоянное значение, может ссылаться от нативного кода. Аннотацию можно использовать в качестве подсказки инструментами, которые генерировать собственные файлы заголовков, чтобы определить, является ли файл заголовка требуется, и если да, то какие декларации он должен содержать.
Однако, читая исходный код java, я заметил, что в классе Integer
и Long
константа SIZE
@Native
, в то время как это не для Float, Byte, Double, Short и Character.
Обратите внимание, что константа SIZE представляет количество бит, используемых для представления фактического значения.
public static final int SIZE = 8;//Byte
public static final int SIZE = 16;//Character
public static final int SIZE = 16;//Short
public static final int SIZE = 32;//Float
@Native public static final int SIZE = 32;//Integer
@Native public static final int SIZE = 64;//Long
public static final int SIZE = 64;//Double
Изменить: Я только заметил, что это также относится к MAX_VALUE
и MIN_VALUE
того же класса.
Изменить 2: У меня было свободное время, чтобы сделать некоторые исследования по этому поводу, и, глядя на заголовочные файлы классов Long, Float и т.д., я надеялся выяснить, что констант не было в других заголовках, но, к сожалению, они есть.
static const jint SIZE = 8L;//java/lang/Byte.h
static const jint SIZE = 16L;//java/lang/Character.h
static const jint SIZE = 16L;//java/lang/Short.h
static const jint SIZE = 32L;//java/lang/Float.h
static const jint SIZE = 32L;//java/lang/Integer.h
static const jint SIZE = 64L;//java/lang/Double.h
static const jint SIZE = 64L;//java/lang/Long.h
Почему константа SIZE только @Native для целых и длинных?