|
Spec-Zone .ru
спецификации, руководства, описания, API
|
| Содержание | Предыдущий | Следующий | Индекс | Спецификация Виртуальной машины JavaTM |
| checkcast_quick | |
| indexbyte1 | |
| indexbyte2 |
Формы
checkcast_quick = 224 (0xe0)
Стек
..., objectref
..., objectref
Описание
objectref должен иметь тип reference. indexbyte1 без знака и indexbyte2 используются, чтобы создать индекс в постоянный пул текущего класса (§3.6), где значение индекса (indexbyte1 << 8) | indexbyte2. Объект по тому индексу постоянного пула, должно быть, уже был успешно разрешен и должен быть классом или интерфейсным типом.
Если objectref null или может быть брошен к разрешенному классу, массиву, или интерфейсному типу, стек операнда неизменен; иначе, checkcast_quick инструкция бросает a ClassCastException.
Следующие правила используются, чтобы определить, ли objectref, который не является null может быть брошен к разрешенному типу: Если S является классом объекта, упомянутого objectref, и T является разрешенным классом, массивом, или интерфейсный тип, checkcast_quick определяет, может ли objectref быть брошен к типу T следующим образом:
[], то есть, массив компонентов SC типа, тогда: Object (§2.4.6).
[], то есть, массив компонентов TC типа, тогда одно из следующего должно быть истиной:
Исключение на этапе выполнения
Если objectref не может быть брошен к типу разрешенного класса, checkcast_quick инструкция бросает a ClassCastException.
Примечания
Код операции этой инструкции был первоначально checkcast. Операнды checkcast инструкции не изменяются.
checkcast_quick инструкция очень подобна instanceof_quick инструкции. Это отличается по своей обработке null, его поведение, когда его тест перестал работать (checkcast_quick выдает исключение, instanceof_quick, продвигает код результата), и его эффект на стек операнда.
Содержание | Предыдущий | Следующий | Индекс
Спецификация Виртуальной машины Java (HTML, сгенерированный chsieh 13 марта 1997)
Авторское право © 1996, 1997 Sun Microsystems, Inc. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к doug.kramer@sun.com