1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * you may not use this file except in compliance with the License. 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * You may obtain a copy of the License at 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage java.lang.reflect; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This class provides static methods to create and access arrays dynamically. 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic final class Array { 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Prevent this class from being instantiated. 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private Array(){ 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //do nothing 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the element of the array at the specified index. This reproduces 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the effect of {@code array[index]}. If the array component is a primitive 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * type, the result is automatically wrapped. 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the requested element, possibly wrapped 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the array is null 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code array} is not an array 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static Object get(Object array, int index) 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof Object[]) 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((Object[]) array)[index]; 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof boolean[]) 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((boolean[]) array)[index] ? Boolean.TRUE : Boolean.FALSE; 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof byte[]) 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new Byte(((byte[]) array)[index]); 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof char[]) 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new Character(((char[]) array)[index]); 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof short[]) 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new Short(((short[]) array)[index]); 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof int[]) 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new Integer(((int[]) array)[index]); 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof long[]) 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new Long(((long[]) array)[index]); 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof float[]) 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new Float(((float[]) array)[index]); 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof double[]) 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new Double(((double[]) array)[index]); 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array == null) 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new NullPointerException(); 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("Not an array"); 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the element of the array at the specified index, converted to a 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code boolean}, if possible. This reproduces the effect of {@code 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * array[index]} 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the requested element 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code array} is not an array or the element at the 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * index position can not be converted to the return type 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static boolean getBoolean(Object array, int index) 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof boolean[]) { 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((boolean[]) array)[index]; 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else if (array == null) { 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new NullPointerException(); 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else if (array.getClass().isArray()) { 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("Wrong array type"); 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("Not an array"); 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the element of the array at the specified index, converted to a 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code byte}, if possible. This reproduces the effect of {@code 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * array[index]} 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the requested element 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code array} is not an array or the element at the 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * index position can not be converted to the return type 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static byte getByte(Object array, int index) 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof byte[]) { 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((byte[]) array)[index]; 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return getBoolean(array, index) ? (byte)1 : (byte)0; 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the element of the array at the specified index, converted to a 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code char}, if possible. This reproduces the effect of {@code 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * array[index]} 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the requested element 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code array} is not an array or the element at the 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * index position can not be converted to the return type 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static char getChar(Object array, int index) 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof char[]) { 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((char[]) array)[index]; 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else if (array == null) { 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new NullPointerException(); 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else if (array.getClass().isArray()) { 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("Wrong array type"); 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("Not an array"); 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the element of the array at the specified index, converted to a 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code double}, if possible. This reproduces the effect of {@code 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * array[index]} 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the requested element 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code array} is not an array or the element at the 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * index position can not be converted to the return type 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static double getDouble(Object array, int index) 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof double[]) { 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((double[]) array)[index]; 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return getFloat(array, index); 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the element of the array at the specified index, converted to a 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code float}, if possible. This reproduces the effect of {@code 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * array[index]} 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the requested element 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code array} is not an array or the element at the 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * index position can not be converted to the return type 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static float getFloat(Object array, int index) 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof float[]) { 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((float[]) array)[index]; 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return getLong(array, index); 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the element of the array at the specified index, converted to an 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code int}, if possible. This reproduces the effect of {@code 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * array[index]} 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the requested element 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code array} is not an array or the element at the 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * index position can not be converted to the return type 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static int getInt(Object array, int index) 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof int[]) { 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((int[]) array)[index]; 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return getShort(array, index); 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the length of the array. This reproduces the effect of {@code 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * array.length} 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the length of the array 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code array} is not an array 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static int getLength(Object array) { 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof Object[]) 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((Object[]) array).length; 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof boolean[]) 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((boolean[]) array).length; 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof byte[]) 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((byte[]) array).length; 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof char[]) 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((char[]) array).length; 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof short[]) 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((short[]) array).length; 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof int[]) 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((int[]) array).length; 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof long[]) 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((long[]) array).length; 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof float[]) 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((float[]) array).length; 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof double[]) 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((double[]) array).length; 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array == null) 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new NullPointerException(); 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("Not an array"); 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the element of the array at the specified index, converted to a 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code long}, if possible. This reproduces the effect of {@code 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * array[index]} 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the requested element 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code array} is not an array or the element at the 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * index position can not be converted to the return type 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static long getLong(Object array, int index) 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof long[]) { 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((long[]) array)[index]; 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return getInt(array, index); 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the element of the array at the specified index, converted to a 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code short}, if possible. This reproduces the effect of {@code 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * array[index]} 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the requested element 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code array} is not an array or the element at the 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * index position can not be converted to the return type 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static short getShort(Object array, int index) 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof short[]) 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ((short[]) array)[index]; 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return getByte(array, index); 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a new multidimensional array of the specified component type and 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * dimensions. This reproduces the effect of {@code new 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * componentType[d0][d1]...[dn]} for a dimensions array of { d0, d1, ... , 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * dn }. 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param componentType 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the component type of the new array 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param dimensions 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the dimensions of the new array 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the new array 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the component type is {@code null} 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NegativeArraySizeException 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if any of the dimensions are negative 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the array of dimensions is of size zero, or exceeds the 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limit of the number of dimension for an array (currently 255) 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static Object newInstance(Class<?> componentType, int[] dimensions) 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws NegativeArraySizeException, IllegalArgumentException { 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (dimensions.length <= 0 || dimensions.length > 255) 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("Bad number of dimensions"); 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (componentType == Void.TYPE) 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException(); 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (componentType == null) 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new NullPointerException(); 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return createMultiArray(componentType, dimensions); 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Create a multi-dimensional array of objects with the specified type. 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project native private static Object createMultiArray(Class<?> componentType, 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int[] dimensions) throws NegativeArraySizeException; 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a new array of the specified component type and length. This 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * reproduces the effect of {@code new componentType[size]}. 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param componentType 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the component type of the new array 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param size 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the length of the new array 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the new array 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the component type is null 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NegativeArraySizeException 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code size < 0} 468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static Object newInstance(Class<?> componentType, int size) 472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws NegativeArraySizeException { 473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!componentType.isPrimitive()) 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return createObjectArray(componentType, size); 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (componentType == Boolean.TYPE) 477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new boolean[size]; 478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (componentType == Byte.TYPE) 480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new byte[size]; 481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (componentType == Character.TYPE) 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new char[size]; 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (componentType == Short.TYPE) 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new short[size]; 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (componentType == Integer.TYPE) 489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new int[size]; 490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (componentType == Long.TYPE) 492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new long[size]; 493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (componentType == Float.TYPE) 495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new float[size]; 496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (componentType == Double.TYPE) 498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new double[size]; 499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (componentType == Void.TYPE) 501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException(); 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new RuntimeException(); // should be impossible 504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Create a one-dimensional array of objects with the specified type. 508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project native private static Object createObjectArray(Class<?> componentType, 510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int length) throws NegativeArraySizeException; 511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the element of the array at the specified index to the value. This 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * reproduces the effect of {@code array[index] = value}. If the array 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * component is a primitive type, the value is automatically unwrapped. 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the new value 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code array} is not an array or the value cannot be 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * converted to the array type by a widening conversion 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static void set(Object array, int index, Object value) 535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!array.getClass().isArray()) { 537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("Not an array type"); 538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof Object[]) { 541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (value != null && 542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project !array.getClass().getComponentType().isInstance(value)) { 543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // incompatible object type for this array 544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("Wrong array type"); 545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ((Object[]) array)[index] = value; 548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (value == null) { 550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("Primitive array can't take null values."); 551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (value instanceof Boolean) 554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setBoolean(array, index, ((Boolean) value).booleanValue()); 555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project else if (value instanceof Byte) 556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setByte(array, index, ((Byte) value).byteValue()); 557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project else if (value instanceof Character) 558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setChar(array, index, ((Character) value).charValue()); 559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project else if (value instanceof Short) 560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setShort(array, index, ((Short) value).shortValue()); 561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project else if (value instanceof Integer) 562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setInt(array, index, ((Integer) value).intValue()); 563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project else if (value instanceof Long) 564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setLong(array, index, ((Long) value).longValue()); 565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project else if (value instanceof Float) 566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setFloat(array, index, ((Float) value).floatValue()); 567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project else if (value instanceof Double) 568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setDouble(array, index, ((Double) value).doubleValue()); 569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the element of the array at the specified index to the {@code 574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * boolean} value. This reproduces the effect of {@code array[index] = 575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * value}. 576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the new value 583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is not an array or the value cannot be 588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * converted to the array type by a widening conversion 589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static void setBoolean(Object array, int index, boolean value) { 595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof boolean[]) { 596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ((boolean[]) array)[index] = value; 597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setByte(array, index, value ? (byte)1 : (byte)0); 599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the element of the array at the specified index to the {@code byte} 604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * value. This reproduces the effect of {@code array[index] = value}. 605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the new value 612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is not an array or the value cannot be 617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * converted to the array type by a widening conversion 618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static void setByte(Object array, int index, byte value) 624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof byte[]) { 626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ((byte[]) array)[index] = value; 627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setShort(array, index, value); 629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Set the element of the array at the specified index to the {@code char} 634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * value. This reproduces the effect of {@code array[index] = value}. 635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the new value 642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is not an array or the value cannot be 647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * converted to the array type by a widening conversion 648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static void setChar(Object array, int index, char value) 654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof char[]) { 656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ((char[]) array)[index] = value; 657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else if (array == null) { 658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new NullPointerException(); 659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else if (!array.getClass().isArray()) { 660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("Not an array"); 661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("Wrong array type"); 663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Set the element of the array at the specified index to the {@code double} 668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * value. This reproduces the effect of {@code array[index] = value}. 669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the new value 676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is not an array or the value cannot be 681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * converted to the array type by a widening conversion 682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static void setDouble(Object array, int index, double value) 688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof double[]) { 690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ((double[]) array)[index] = value; 691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else if (array == null) { 692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new NullPointerException(); 693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else if (!array.getClass().isArray()) { 694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("Not an array"); 695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("Wrong array type"); 697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Set the element of the array at the specified index to the {@code float} 702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * value. This reproduces the effect of {@code array[index] = value}. 703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the new value 710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is not an array or the value cannot be 715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * converted to the array type by a widening conversion 716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static void setFloat(Object array, int index, float value) 722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof float[]) { 724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ((float[]) array)[index] = value; 725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setDouble(array, index, value); 727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Set the element of the array at the specified index to the {@code int} 732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * value. This reproduces the effect of {@code array[index] = value}. 733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the new value 740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is not an array or the value cannot be 745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * converted to the array type by a widening conversion 746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static void setInt(Object array, int index, int value) 752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof int[]) { 754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ((int[]) array)[index] = value; 755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setLong(array, index, value); 757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Set the element of the array at the specified index to the {@code long} 762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * value. This reproduces the effect of {@code array[index] = value}. 763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the new value 770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is not an array or the value cannot be 775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * converted to the array type by a widening conversion 776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static void setLong(Object array, int index, long value) 782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof long[]) { 784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ((long[]) array)[index] = value; 785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setFloat(array, index, value); 787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Set the element of the array at the specified index to the {@code short} 792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * value. This reproduces the effect of {@code array[index] = value}. 793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param array 795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the array 796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param index 797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the index 798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the new value 800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is {@code null} 803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IllegalArgumentException 804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if the {@code array} is not an array or the value cannot be 805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * converted to the array type by a widening conversion 806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws ArrayIndexOutOfBoundsException 807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code index < 0 || index >= array.length} 808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since Android 1.0 810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static void setShort(Object array, int index, short value) 812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws IllegalArgumentException, ArrayIndexOutOfBoundsException { 813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (array instanceof short[]) { 814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ((short[]) array)[index] = value; 815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setInt(array, index, value); 817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 821