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

    这篇小博客有这么些内容~认识何使用java反射机制的心路历程

    什么是java反射机制呢?什么时候会用到java反射机制呢?怎么使用java反射机制呢?


     

    那我们开始吧~

    (一)反射机制(Reflection)

    JAVA反射机制_百度百科(你不打算戳戳看吗?)

    java反射机制让Java这个静态语言变得格外突出,反射机制可以让java在运行过程中动态的调用类里面的属性和方法,可以动态的调用对象的方法。

    *在度娘解释里动态语言和静态语言这两个词瞩目

    所以静态语言和动态语言的区别 - raindi - 博客园

    静态在编译的时候一个变量的类型由它的定义决定,而动态语言实在于运行时可以根据上下文来确定变量的类型

    (二)为什么要用反射机制呢?

    反射机制可以让java在运行的时候获得某个类的结构、成员变量,用来实例化。Java的反射机制它知道类的基本结构,这种对Java类结构探知的能力,我们称为Java类的“自审”。这种自审机制就像用eclipse的时候--对象.XXX的时候编译工具会跳出这个对象对应的的属性和方法,就是自审机制。nice

    (三)怎么使用java反射机制呢?

    1.Class类
    什么是Class类呢?
    在java语言里,类是java.lang.Class的实例化对象(Class大写C),那么就可以说我创建一个对象比如学生就是Class类的对象,“学生”本身也是类。

    2.反射

    现在想用java的反射机制来访问“学生”类我可以这样声明

      public class Domo {
         public void f() {
        	//声明学生对象1
        	Student ni = new Student();
        	//声明学生对象2
        	Class a = Student.class;//也就是每一个对象都有一个class属性
        	//声明学生对象3
        	Class b = ni.getClass();//通过已知对象来获得对应的类;
        	//声明学生对象4
        	try {
        		Class c3 = Class.forName("one.Student");//找到类的路径
        		} catch (ClassNotFoundException e) {
        		e.printStackTrace();
        		}
        }
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		
    	}
    
    }

    这里的abc都是类都表示了Student的类类型,那么abc是否相等呢?

    实践输出“a==b”返回值是true可见一个类只能是一个Class的实例对象。

    -----1通过创建实例化对象

    通过a,b,c的newInstance来创
    try {
    			Student a1 =(Student)a.newInstance();
    		} catch (InstantiationException | IllegalAccessException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} 		

    -----2调用对象的方法

    通过调用对象的方法,方法其实也是实例化对象,它是Method的实例化对象。

    	Method[] ms = c.getMethods();//获得类里面的方法;
        			for(int i = 0; i < ms.length;i++){
        				//然后可以得到方法的名称
        				System.out.print(ms[i].getName()+"   ");
        			}

    获得对象的参数,和获得方法一样,属性也有它的类-》Field

    Field[] fs = c.getDeclaredFields();//可以这样获得方法,这里的方法不管是私有还是共有都可以获取

    -----3对象的构造函数

    同理构造函数也有它的类-》Constructor

    Constructor[] cs = c.getDeclaredConstructor;//获取它的全部构造函数


    谈谈Java反射机制~我有认真看他的博客

    Java基础之-反射(非常重要) - CSDN博客~

  • 相关阅读:
    hdu 5056 Boring count (窗体滑动)
    【JEECG技术博文】JEECG表单配置-树形表单
    EA类图与代码同步
    简单算法汇总
    jQuery.outerWidth() 函数具体解释
    省市县三级联动的SQL
    从LayoutInflater分析XML布局解析成View的树形结构的过程
    holodesk表存储-列重复值太多,导致存储占用空间翻很多倍
    星环TDH大数据平台,数据误删除之后,恢复办法
    IDEA类和方法注释模板设置(非常详细)
  • 原文地址:https://www.cnblogs.com/ttnrt/p/11086554.html
Copyright © 2011-2022 走看看