跟王老师学反射(八):使用反射操作数组

跟王老师学反射(八):使用反射操作数组

主讲教师:王少华   QQ群号:483773664

学习内容

使用反射操作数组

在java.lang.reflect包下还提供了一个Array类,Array对象可以代表所有的数组。程序可以通过使用Array来动态创建数组。

一、传统的创建数组的方法


1

2

3

4

5

6

7

8

public   static   void  main(String[] args)  {

       int vec[] = new int[]{1, 5, 3};  // 第一种方法         

       int  vec[]  =  { 37 47 23 } ;   // 第二种方法 

 

      int vec[] = new int [3];

      for(int i=0;i<3;i++)

       vec[i]=i+1;           //第三种方法

}

二、Array提供的方法

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

创建一个具有指定的元素类型、指定维度的新数组

(二)public static Xxx getXxx(Object array,
int index)

返回array数组中第index个元素,其中xxx是各种基本数据类型。如果数组元素是引用类型,则该方法变为get(Object array,int index)

(三)public static void setXxx(Object array,
int index,
Object value)

将array数组中第index元素的值设为val.其中xxx是各种基本数据类型。如果数组元素是引用类型,则该方法变为set(Object array,int index,Object val)

二、演示

(一)利用Array操作一组数组


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

public class ArrayTest1 {

    public static void main(String[] args) {

        try {

            //创建一个元素类型为String ,长度为10的数组

            Object arr = Array.newInstance(String.class, 10);

            //依次向arr数组中index = 5,6的元素赋值

            Array.set(arr, 5, "zhangsan");

            Array.set(arr, 6, "leisi");

            //依次取出arr数组中index=5、6的元素值,并打印输出

            System.out.println(Array.get(arr, 5));

            System.out.println(Array.get(arr, 6));

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

(二)利用Array类操作二维数组


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

public class ArrayTest2 {

    public static void main(String[] args) {

        /**

         * 创建一个二维数组

         * 二维数组,可以理解二个一维数组

         */

        Object array = Array.newInstance(String.class, 3,4);

        //获取array数组中的index为2的元素,这是一个一维数组

        Object arr = Array.get(array, 2);

        //为arr赋值

        Array.set(arr, 0, "zhangsan");

        Array.set(arr, 1, "lisi");

        Array.set(arr, 2, "wangwu");

        Array.set(arr, 3, "zhaoliu");

        //取值

        System.out.println(Array.get(arr, 2));

    }

}

来自为知笔记(Wiz)

时间: 2024-08-06 16:01:56

跟王老师学反射(八):使用反射操作数组的相关文章

跟王老师学反射(四):Class类:从Class类中获取信息

跟王老师学反射(四)Class类:从Class类中获取信息 主讲教师:王少华   QQ群号:483773664 学习内容 获得class类中的信息 根据我们以前学过的一个Java类有以下几部组成,如下代码所示 一.访问Class对应的类所包含的构造方法 (一)public Constructor<T> getConstructor(Class<?>... parameterTypes) 返回此Class对象所表示的类的指定public构造方法. parameterTypes参数是按

跟王老师学反射(一):反射概述

跟王老师学反射(一) java反射概述 主讲教师:王少华   QQ群号:483773664 学习目标: 理解Java反射机制 一.什么是Java反射 现实生活,我们会看到这样的现象,在很多影视城,会看到很多山寨版的古代的建筑,比如故宫,但是由于年代久远,故宫的建筑图纸,丢失了(我们假设故宫的图纸丢失了),这样我们就必须依据现在的故宫实体建筑,画出它的图纸,然后依据现画好来的图纸,来建造山寨版的故宫.这样一个由实物得到图纸的过程,我们也可以称之为"反射过程" Reflection(反射)

跟王老师学反射(二):Java类的加载、连接和初始化

跟王老师学反射(二):Java类的加载.连接和初始化 主讲教师:王少华   QQ群号:483773664 学习内容: 了解类的加载.连接和初始化 一.类的生命周期 当我们编写一个java的源文件后,经过编译会生成一个后缀名为class的文件,这种文件叫做字节码文件,只有这种字节码文件才能够在java虚拟机中运行,java类的生命周期就是指一个class文件从加载到卸载的全过程.一个java类的完整的生命周期会经历加载.连接.初始化.使用.和卸载五个阶段,当然也有在加载或者连接之后没有被初始化就直

跟王老师学反射(三):Class类:获得Class对象

跟王老师学反射(三):Class类:获得Class对象 主讲教师:王少华   QQ群号:483773664 学习内容 掌握获得Class对象的三种方式 理解这三种方式的区别 一.获得Class对象 前面我们已经领略了反射的魅力了,我们知道,利用反射的关键是要获得"图纸"Class对象,那么怎么获得这个Class对象呢!!! 每个类被加载之后,系统会为该类生成一个对应的Class对象,通过该Class对象就可以访问JVM中的这个类.Java程序获得Class对象有如下三种方式: (一)调

跟王老师学反射(五):使用反射生成并操作对象

跟王老师学反射(五):使用反射生成对象 主讲教师:王少华   QQ群号:483773664 学习内容 使用反射生成对象 模板类 一.创建对象 (一).非反射方法 (二).反射方式 通过构造方法生成对象,有二种方式,一种通过无参的构造方法,一种是通过有参的构造方法. 1.无参构造方法 1.1 如果无参数的构造方法是public 也可以使用Class对象的newInstance()方法来创建该Class对象对应类的实例 1.2 如果无参构造方法是私有化的 结论 如果无参构造访问,是私有化的,一定要使

跟王老师学反射(六):使用反射调用方法

跟王老师学反射(六):使用反射调用方法 主讲教师:王少华   QQ群号:483773664 学习内容 使用反射调用方法 当获得某个类对应的Class对象后,就可以通过该Class对象的getMethods()方法或getMethod()方法来获取全部方法或指定方法,这二个方法的返回值是Method对象数组,或者Method对象. 一.public Objectinvoke(Object obj,  Object... args) 获得Method对象后,程序就可以通过该Method来调用对应的方

跟王老师学反射(七)使用反射调用属性

跟王老师学反射(七):使用反射调用属性 主讲教师:王少华   QQ群号:483773664 学习内容 使用反射调用属性 通过Class对象的getFields()|getDeclaredFields()或getField()|getDeclaredField()方法可以获取该类所有包括的全部属性或指定的属性 一.Field类用于猎取类中的属性的方法 (一)getXxx(Object obj) 获取obj对象该Field的属性值,此处Xxx对应8个基本类型. (二)setXxx(Object ob

跟王老师学反射(九):反射应用小案例--进行对象拷贝

跟王老师学反射(九):反射应用小案例--进行对象拷贝 学习内容 一.需求 二.参考代码 (一)Customer:标准JavaBean (二)方法编写 来自为知笔记(Wiz)

跟王老师学反射(十):静态代理模式

跟王老师学反射(十):静态代理模式 主讲教师:王少华   QQ群号:483773664 学习内容 理解代理机制 掌握静态代理 一.代理模式的概念 代理模式就是指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理. 代理模式一般涉及到三个角色 抽象角色:声明真实对象和代理对象的共同接口 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能替代真实对象相同的接口以便在任何时刻都能替代真实对