zoukankan      html  css  js  c++  java
  • 反射(2019年10月28日)

    目前创建对象的三种方式:1.通过构造方法,用关键字new来创建对象 2.用clone来浅拷贝一个对象 3.利用反射机制,反射一个对象

    反射方式创建类;

    1.利用已经存在的对象来反射新的对象

    1 Student s = new Student();

    2 Class sClazz = s.getClass();  

    2.利用已知类名来创建对象

    1 Class clazz = Student.class; 

    3.利用准确的类名来创建对象

    1 Class clazz = Class.forName("com.bli.zyx.Student");

    2 Student s=(Student)clazz.newInstance();

    //newInstance会去找无参的构造方法执行,创建对象

    如果对象中没有无参的构造方法,那么我们需要创建一个构造器来创建有参的构造方法

    1                Constructor <Student> c=clazz.getConstructor(String.class,String.class);//利用构造器,后面的参数是构造函数中的形式参数类型

    通过构造器的方式可以匹配不同的参数列表的构造方法
          Constructor<Student> c = clazz.getConstructor(String.class,int.class);
          Student s1 = c.newInstance("asdfa",123);
          s1.eat();

      Constructor [] consList = clazz.getConstructors();//构造器数组,可以把所有的构造器都取到 

    取到属性:

     获取共有的属性
     Field f = clazz.getField("room");
    f.set(s1,
    "room222");//设置属性

     获取私有的属性

                Field f1 = clazz.getDeclaredField("stuNo");
            System.out.println(f1.getName());
            f1.setAccessible(true);// 给权限来修改私有的属性值
            f1.set(s1, "101");

     获取属性数组,并遍历

                    Field [] flist = clazz.getDeclaredFields();
            for(Field f:flist){
                System.out.println(f.getName());
            }

    获取方法:

      获取公开的方法:

            Method  studyM1 = clazz.getMethod("study", String.class);
            studyM1.invoke(s1, "hello");

      获取私有的方法:

            Method m3 = clazz.getDeclaredMethod("study", String.class);
            m3.setAccessible(true);// 给权限
            m3.invoke(s1, "abc");

      获取方法的数组,并遍历

            Method [] mList = clazz.getDeclaredMethods();
            for(Method m : mList){
                System.out.println(m);
            }

      

  • 相关阅读:
    ZLL网关程序分析
    ZLL主机接口的信息处理流程
    TI Zigbee Light Link 参考设计
    基于能量收集的智能家居-2013国家级大学生创业实践项目申报_商业计划书_V0.2
    office excel 装Visual Studio后报错解决方案
    php随机生成验证码
    Mysql添加外键约束
    hdu 1232 畅通工程
    hdu 1162 Eddy's picture (Kruskal 算法)
    hdu 1102 Constructing Roads (Prim算法)
  • 原文地址:https://www.cnblogs.com/Starlets/p/11767036.html
Copyright © 2011-2022 走看看