=== 2.3.2.3 Static Restrictions on Bytecodes === A **class** file must conform to the following restrictions on the static form of bytecodes. == ldc_ldc_w == The ****ldc**** and ****ldc****_w bytecodes can only be used to load integer constants. The constant pool entry at index must be a **CONSTANT_Integer** entry. If a program contains an ****ldc**** or ****ldc****_w instruction that is used to load an integer value less than -32768 or greater than 32767, that program will require the optional int instructions ([[2.2.3.1_Integer Data Type| Section 2.2.3.1, Integer Data Type]]). == lookupswitch == The value of the npairs operand must be less than 65536. This limit is far greater than the limit imposed by the maximum size of methods ([[2.2.4.4_Methods| Section 2.2.4.4, Methods]]). If a program contains a lookupswitch instruction that uses keys of type int, that program will require the optional int instructions ([[2.2.3.1_Integer Data Type| Section 2.2.3.1, Integer Data Type]]). Otherwise, key values must be in the range -32768 to 32767. == tableswitch == The bytecode can contain at most 65536 cases. This limit is far greater than the limit imposed by the maximum size of methods ([[2.2.4.4_Methods| Section 2.2.4.4, Methods]]). If a program does not use the optional int instructions ([[2.2.3.1_Integer Data Type| Section 2.2.3.1, Integer Data Type]]), the values of the **high** and **low** operands must both be at least -32768 and at most 32767. == wide == The **wide** bytecode can only be used with an **iinc** instruction.