Java基础---反射Reflect-----Array

原创
2016/03/12 15:11
阅读数 183
Array   java.lang.reflect   Array类提供了动态创建和访问 Java 数组的方法
1、反射中数组类型的Class名称   
public class SubClass extends ParentClass {

    public static void main(String[] args) {
	try {
		String[] array = {};
		System.out.println("一维数组 ----类型名称"+array.getClass().getName());
		System.out.println("一维数组 ----权威名称"+array.getClass().getCanonicalName());
		String[][] marray = {};
		System.out.println("多维数组 ----类型名称"+marray.getClass().getName());
		System.out.println("多维数组 ----权威名称"+marray.getClass().getCanonicalName());
	} catch (Exception e) {
			e.printStackTrace();
	}
    }
}

 运行结果:  

一维数组 ----类型名称[Ljava.lang.String;
一维数组 ----权威名称java.lang.String[]
多维数组 ----类型名称[[Ljava.lang.String;
多维数组 ----权威名称java.lang.String[][]
     结论 : 三种叫法
    "java.lang.String[]" style arrays
    "[Ljava.lang.String;" style arrays
    "[[I" or "[[Ljava.lang.String;" style arrays
2、Array类中方法
  public static Object get(Object array, int index)
  public static boolean getBoolean(Object array, int index)
  public static byte getByte(Object array,int index)
  public static char getChar(Object array,int index)
  public static short getShort(Object array, int index)
  public static int getInt(Object array,int index)
  public static long getLong(Object array,int index)
  public static float getFloat(Object array,  int index)

 以上static方法用于反射中获取数组array指定索引index处的值,根据数组类型选择使用哪一个方法获取;

public static void set(Object array,int index,Object value)
public static void setBoolean(Object array,int index,boolean value)
public static void setByte(Object array,int index,byte value)
public static void setChar(Object array,int index,char value)
public static void setShort(Object array,int index,short value)
public static void setInt(Object array,int index,int value)
public static void setLong(Object array,int index,long value)
public static void setFloat(Object array,int index,float value)
public static void setDouble(Object array,int index,double value)

  以上static方法用于改变数组array中索引位置为index的值为 value

public class SubClass extends ParentClass {

	public static void main(String[] args) {
		try {
			String[] array = {"a","b"};
			System.out.println("数组array的索引为1处的值---"+Array.get(array, 1));
			Array.set(array, 1, "c");
			System.out.println("数组array的索引为1处的值---"+Array.get(array, 1));
	
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
数组array的索引为1处的值---b
数组array的索引为1处的值---c

  

public static int getLength(Object array)

   获取数组array的长度  

public static Object newInstance(Class<?> componentType, int length)

  创建一个长度为length的componentType类型的数组  

public static Object newInstance(Class<?> componentType,int... dimensions)

  创建一个componentTyp类型的多维数组,数组每一维度的长度分别为... dimensions

public static void main(String[] args) {
		try {
			String[][] string =(String[][]) Array.newInstance(String[].class, 2);
			System.out.println(string.length);
			String[][][] multistring = (String[][][]) Array.newInstance(String.class, 1,1,1);
			System.out.println(multistring.length);//第一维数组长度
			System.out.println(multistring[0].length);//第二位数组长度
			System.out.println(multistring[0][0].length);//第三位数组长度
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
2
1
1
1
展开阅读全文
打赏
1
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
1
分享
返回顶部
顶部