zoukankan      html  css  js  c++  java
  • JAVA反射机制

    下面就简单的总结一下java反射机制,加深印象:

    什么是反射机制?

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;

    对于任意一个对象,都能够调用它的任意方法和属性;

    这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

    Class类

    我们知道Java是一门面向对象语言,在Java的世界里,万物皆为对象,比如我们有一个Person类:

    public class Person { }

    我们创建一个Person类的实例,Person person = new Person; 那么这个person,就是Person类的实例对象。

    那么既然万物都为对象,所以类也是对象。

    类是什么的对象呢?类是Class类的对象,表示方式有三种:

    第一种,任何一个类都有一个隐含的静态成员变量class Class c1 = Person.class;

    第二种,已经知道该类的对象,通过getClass获得 Class c2 = person.getClass;

    第三种,Class类的forName方法 Class c3 = Class.forName("Person"); 

     

    通过类的类类型,我们经常会用到的方法就是newInstance方法,通过该方法可以创建该类的实例:

    Person personA = new Person;

    //直接new一个实例 Person personB = Person.class.newInstance;

    //通过newInstance方法获得Person的实例

    //在学习JAVAEE时候,newInstance方法我们最常见于获取数据库驱动 Class.forName("com.mysql.jdbc.Driver").newInstance;

    //需要注意的是,在使用newInstance方法的前提是该类必须要有无参构造方法

    动态加载类:

    编译时刻加载类称为静态加载,运行时刻加载类称为动态加载,使用new方法新建实例即为静态加载类,在编译时候就要加载全部类。

     

    方法的反射操作

    可以通过方法的反射操作实现方法的调用:

    import java.lang.reflect.Method;
    public class MethodDemo1 { 
        public static void main(String[] args) { 
        //要获取print(int, int) 
        //要获取类的方法就要获取类的信息,获取类的信息就要获取类的类类型 
        A a1 = new A; Class c = a1.getClass; 
        //2,获取方法 名称和参数列表 
        //getMethod获取的是public的方法
        try { 
            Method m = c.getDeclaredMethod("print", int.class,int.class);            
         //方法的反射操作 //a1.print(10, 20);方法的反射操作,用m来进行方法调用和前者效果一致 Object obj = m.invoke(a1, 10,20); //如果方法有返回值返回值,没有就null } catch (Exception e) { e.printStackTrace; } } } class A { public void print(int a , int b) { System.out.println(a + b); } public void print(String a , String b) {
       System.out.println(a.toUpperCase + "," + b.toUpperCase); } }

     

  • 相关阅读:
    字典或者数组与JSON串之间的转换
    银联支付 支付代码
    iOS 一个新方法:- (void)makeObjectsPerformSelector:(SEL)aSelector;
    iOS 直接使用16进制颜色
    iOS 添加view的分类(更加方便的设置view的位置)
    iOS 中UITableView的深理解
    Swift 中调试状态下打印日志
    手把手教React Native实战开发视频教程【更新到40集啦。。。】
    React Native 开发
    React-Native学习指南
  • 原文地址:https://www.cnblogs.com/ZRJ-boke/p/6099452.html
Copyright © 2011-2022 走看看