zoukankan      html  css  js  c++  java
  • 关于EKT相关知识(类的反射)

    |   |   reflect

    提供类和接口,以获得关于类和对象的反射信息

    1.实现了反射的类:

    Class类:代表一个类。

    Field 类:代表类的成员变量(成员变量也称为类的属性)。

    Method类:代表类的方法。

    Modifier类:代表修饰符。

    Constructor 类:代表类的构造方法。

    Array类:提供了动态创建数组,以及访问数组的元素的静态方法

    2.java反射机制:

      1)在Java运行时 环境中,对于任意一个类,能否知道这个类有哪些属性和方法?    

         2) 对于任意一个对象,能否调用他的方法?这些答案是肯定的,这种动态获取类的信息,以及动态调用类的方法的功能来源于JAVA的反射。从而使java具有动态语言的特性。 

    3.代码示例

    1)注意事项:

    a.运行jdk环境版本:jdk1.8.0_131

    b. 编译工具:Idea 2018 版本

    2)Contructor类实现反射:

    代码示例:

    package com.liujie.demo.Demo2;
    
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Modifier;
    
    public class Demo2 {
        public static void main(String[] args)throws SecurityException,
                NoSuchMethodException, IllegalArgumentException, InstantiationException,
                IllegalAccessException, InvocationTargetException {
            //反射String类的所有构造方法
            Class clz= Student.class;
            System.out.println("所有构造方法");
            //Constructor[] cons=clz.getConstructors();
            Constructor[] cons=clz.getDeclaredConstructors();
            for (Constructor con : cons) {
                System.out.println("Constructor构造方法为:"+con+"访问修饰权限:"+ Modifier.toString(con.getModifiers()));
            }
            //找无参的构造方法    Student s = new Student();
            Constructor con = clz.getDeclaredConstructor();
            Object obj = con.newInstance();
            System.out.println("++++++++++++++++++");
            System.out.println(obj);
    
            //找带string,int类型参数的构造方法 Student s = new Student("zhangsan",12)
            con = clz.getDeclaredConstructor(String.class, int.class);
            obj = con.newInstance("zhangsan", 12);
            System.out.println(obj);
    
            con = clz.getDeclaredConstructor(String.class);
            obj = con.newInstance("zhangsi");
            System.out.println(obj);
    
        }
    }

    控制台运行结果:

    心得:

      在程序员这行,既然你进来了,你就得准备好满满的热情,等待竞争强烈的互联网企业猛烈的风雨摧残,

    平均程序员一万多的工资毕竟也不是擒手就来的

  • 相关阅读:
    团队开发中Git冲突解决
    Eclipse使用Git管理项目
    mapper.xml文件中标签不显示问题
    GO语言打包ICO图标
    如何创建 Visual Studio 2017 RC 离线安装包
    Redis系列-远程连接redis并给redis加锁
    Redis开启远程登录连接。
    Redis作为多个Windows服务运行配置方法
    Java课程设计---安装Mysql及管理工具
    Java多线程编程核心技术---多线程技能
  • 原文地址:https://www.cnblogs.com/xiaojieDeam/p/13542915.html
Copyright © 2011-2022 走看看