Spec-Zone .ru
спецификации, руководства, описания, API
|
Содержание | Предыдущий | Следующий | Индекс | Спецификация Виртуальной машины JavaTM |
Работа
Загрузкаchar
от массива
Формат
caload
Формы
caload = 52 (0x34)
Стек операнда
..., arrayref, индекс..., значение
Описание
arrayref должен иметь типreference
и должен обратиться к массиву, компоненты которого имеют типchar
. Индекс должен иметь типint
. И arrayref и индекс выталкиваются от стека операнда. Компонент массива по индексу получается и расширяется до нуля наint
значение. То значение продвигается на стек операнда.
Исключения на этапе выполнения
Если arrayrefnull
, caload бросает aNullPointerException
.
Иначе, если индекс не в пределах границ массива, на который ссылается arrayref, caload инструкция бросает ArrayIndexOutOfBoundsException
.
Работа
Хранилище вchar
массив
Формат
castore
Формы
castore = 85 (0x55)
Стек операнда
..., arrayref, индекс, оценивают...
Описание
arrayref должен иметь типreference
и должен обратиться к массиву, компоненты которого имеют типchar
. Индекс и значение должны оба иметь типint
. arrayref, индекс, и значение выталкиваются от стека операнда.int
значение является усеченным к achar
и сохраненный, поскольку компонент массива индексируется индексом.
Исключения на этапе выполнения
Если arrayrefnull
, castore бросает aNullPointerException
.
Иначе, если индекс не в пределах границ массива, на который ссылается arrayref, castore инструкция бросает ArrayIndexOutOfBoundsException
.
Работа
Проверьте, имеет ли объект данный тип
Формат
checkcast indexbyte1 indexbyte2
Формы
checkcast = 192 (0xc0)
Стек операнда
..., objectref..., objectref
Описание
objectref должен иметь тип reference
. indexbyte1 без знака и indexbyte2 используются, чтобы создать индекс в пул константы этапа выполнения текущего класса (§3.6), где значение индекса (indexbyte1 << 8) | indexbyte2. Элемент пула константы этапа выполнения по индексу должен быть символьной ссылкой на класс, массив, или интерфейсный тип. Именованный класс, массив, или интерфейсный тип разрешаются (§5.4.3.1).
Если objectrefnull
или может быть брошен к разрешенному классу, массиву, или интерфейсному типу, стек операнда неизменен; иначе, checkcast инструкция бросает aClassCastException
.
Следующие правила используются, чтобы определить, ли objectref, который не является null
может быть брошен к разрешенному типу: если S является классом объекта, упомянутого objectref, и T является разрешенным классом, массивом, или интерфейсный тип, checkcast определяет, может ли objectref быть брошен к типу T следующим образом:
[]
, то есть, массив компонентов SC типа, тогда:
Соединение Исключений
Во время разрешения символьной ссылки на класс, массив, или интерфейсный тип, может быть выдано любое из исключений, задокументированных в Раздел 5.4.3.1.
Исключение на этапе выполнения
Иначе, если objectref не может быть брошен к разрешенному классу, массиву, или интерфейсному типу, checkcast инструкция бросает aClassCast
Exception
.
Примечания
checkcast инструкция очень подобна instanceof инструкции. Это отличается по своей обработке null
, его поведение, когда его тест перестал работать (checkcast выдает исключение, instanceof, продвигает код результата), и его эффект на стек операнда.
Содержание | Предыдущий | Следующий | Индекс
Спецификация Виртуальной машины JavaTM
Авторское право © Sun Microsystems, Inc 1999 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к jvm@java.sun.com