`
sungang_1120
  • 浏览: 322593 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类

JAVA反射机制 数组与Object的关系及其反射类型

 
阅读更多

      

        int[] i1 = new int[]{1,2,3};
        int[] i2 = new int[4];
        int[][] i3 = new int[3][5];
        String[] strArr = new String[]{"a","b","c"};
       
       
        //对于相同的类型  并且都是一位数组 那么他们的类的字节码是相等的
        System.out.println(i1.getClass() == i2.getClass());//true
        //System.out.println(i1.getClass() == i3.getClass());//false
        //[I  代表是一个数组  类型是Int的
        System.out.println(i1.getClass().getName());//[I
        //获取父类的
        System.out.println(i1.getClass().getSuperclass().getName());//java.lang.Object
       
        System.out.println(strArr.getClass().getSuperclass().getName());//java.lang.Object
       
        Object obj1 = i1;
        Object obj2 = i2;
        Object obj3 = i3;
        //这种编译不过去  因为i1 是一个int数组  基本数据类型不是Object  所以不对
        //Object[] obj4 = i1;
        //这种是因为i3是一个二维数组  相当于i3数组里 有一个int[]数组  int[]是Obejct 所以可以
        Object[] obj5 = i3;
        //这种是因为strArr是一个String的数组  String是Object  所以可以
        Object[] obj6 = strArr;
       
        //直接打印数组
        System.out.println(i1);//I@14318bb
        System.out.println(strArr);//[Ljava.lang.String;@ca0b6
        //吧数组转换成List集合对象
        System.out.println(Arrays.asList(i1));//[[I@14318bb]
       
        System.out.println(Arrays.asList(strArr));//[a, b, c]

 
       
        //为什么i1不行呢???不能在这转成一个List把结果输出呢???
       
       
        //jdk1.5的   参数是一个可变的  当成一个Object 问不是一个数组
        //public static <T> List<T> asList(T... a)
        //jdk1.4的  参数是一个Object数组  当成一个Object数组
        //public static <T> List<T> asList(Object[] obj)
        //看这两个方法的参数就明白了
        //刚刚上面还说i1数组是int类型  基本数据类型int不是Object  所以就不能转换成一个List
        //而strArr数组是一个String类型  String是Object  所以可以
       

分享到:
评论

相关推荐

    java 反射中操作数组

    总结来说,Java反射提供了对数组的动态操作能力,包括创建数组、设置和获取数组元素、以及处理类中声明的数组字段。这种能力使得代码更加灵活,但也增加了潜在的错误风险,因此在使用时应谨慎并充分测试。

    Java反射机制2

    1. 数组与Object的关系及其反射类型: 在Java中,所有数组都继承自Object类,这意味着数组对象可以调用Object类的方法,如equals()和toString()。通过反射,我们可以获取数组的类信息,包括元素类型、长度等。Class...

    java反射机制学习(四):通过反射执行方法、操作属性、操作数组中的数据

    总结来说,Java反射机制提供了强大的动态类型功能,让我们能够在运行时检查类的信息,创建对象,调用方法,访问属性,以及操作数组。这种能力在很多场合都非常有用,如插件系统、代码生成、测试工具等。但同时,反射...

    java反射机制详解

    ### Java反射机制详解 #### 一、反射机制是什么 反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象和调用对象的方法。简单来说,反射机制使得Java程序可以...

    java反射机制及Method.invoke解释

    在 Java 反射机制中,我们可以通过 Method 对象的 invoke 方法来执行某对象的方法,这个方法的返回值是 Object 类型的,可以是基本类型、数组、集合等各种类型。 Java 反射机制提供了一种动态获取类信息和执行对象...

    java反射机制文档及代码

    Java反射机制是Java编程语言中一个强大的特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理元数据、创建对象、调用方法以及...

    Java反射机制总结(实例分析)

    Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并进行操作。通过反射,开发者可以在程序执行时发现并访问类的字段(fields)、方法(methods)以及构造器(constructors),...

    java反射机制应用

    ### Java反射机制应用详解 #### 一、Java反射机制简介 Java反射机制是Java语言提供的一种能在运行时分析类信息并动态操作对象的功能。通过反射,我们可以在程序运行期间获取类的信息(如类名、方法名等),创建...

    详解java中反射机制(含数组参数)

    Java 中的反射机制(含数组参数) Java 中的反射机制是一种强大的工具,可以在运行时获取类的内部信息,包括modifiers、superclass、interfaces、fields 和 methods 的所有信息,并可以在运行时改变 fields 的内容...

    java反射机制与动态代理

    ### Java反射机制与动态代理详解 #### 一、Java反射机制概述 Java反射机制是一种强大的功能,它使得程序能够在运行时动态地获取类的信息并进行操作。反射是Java语言的一个重要特性,也是Java被视为动态语言的关键...

    java反射机制学习笔记+反射机制实操案例

    总结来说,Java反射机制是Java语言的一个重要特性,它使得程序能够在运行时动态地获取类的信息并进行操作,提高了代码的通用性和适应性。在实际开发中,反射机制常用于框架设计、插件系统、数据持久化等领域,但同时...

    java反射机制简介

    ### Java反射机制简介 #### 一、什么是Java反射机制? Java反射机制是Java语言提供的一种在运行时访问类和对象信息的能力。通过反射,我们可以在程序运行时动态地获取类的信息(如类名、方法、构造函数等)并操作...

    java的反射机制

    #### 一、Java反射机制概述 Java反射机制是Java语言提供的一种能在运行时分析和操作类、对象、方法等的能力。它使得开发人员可以在程序运行过程中动态地获取类的信息(例如类名、字段、方法等),并且能够动态地...

    JAVA反射机制详解

    ### JAVA反射机制详解 #### 一、Java反射机制概述 ...通过上述两个示例程序可以看出,Java反射机制不仅能够帮助我们了解一个类的内部结构,还能够实现对象的动态创建与属性设置等功能,极大地扩展了Java编程的可能性。

    java反射机制介绍及使用

    Java反射机制是Java语言提供的一种强大的工具,它允许程序在运行时动态地访问和修改类的行为。这种机制的核心在于能够获取类的元数据信息,并基于这些信息实例化对象、调用方法、访问和修改字段的值,从而实现高度的...

    java反射机制介绍

    Java反射机制是Java语言的一项重要特性,它允许程序在运行时动态地获取类的信息并进行操作。这使得Java具备了高度的灵活性和可扩展性,能够处理编译时未知的类,增强了代码的动态性。 首先,Java反射机制的核心在于...

Global site tag (gtag.js) - Google Analytics