栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

强大的Java的反射机制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

强大的Java的反射机制

该反射是要以泛型编程知识为基础的

反射原理:是指在运行时去获取一个类的变量和方法信息。然后通过获取到的信息来创建对象,调用方法的一种机制。由于这种动态性,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行期仍然可以扩展。

引入包

import java.lang.reflect.Field;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
 
import java.lang.reflect.AccessibleObject;

获取class类的对象

//  通过类的class方法
Consumer.class 

// 通过对象的getClass方法,该方法是Object类的方法
Consumer c = new Consumer();
c.getClass() 

// 使用Class类中的forName(String className)
Class c = Class.forName("cn.lh.Consumer"); 

其中反射用的方法是第二种方法


反射获取构造方法

public static void getProperty() throws ClassNotFoundException, NoSuchMethodException {
    Class c = Class.forName("cn.lh.Consumer");
    Constructor[] cs = c.getConstructors();
    for (Constructor cr: cs) {
        System.out.println(cr);
    }
}

相关API

public Constructor[] getDeclaredConstructors()
public Constructor getDeclaredConstructor(Class... parameterTypes)
public Constructor[] getConstructors()
public Constructor getConstructor(Class... parameterTypes)

构造器和上面的方法、属性都是大同小异的。需要注意的是,当返回一个数组的时候,返回类型是Constructor[]而不是Constructor[],因为从此方法返回之后,该数组可能被修改以保存不同类的 Constructor 对象。

其他同理


反射获取所有方法

public Method[] getDeclaredMethods()
public Method getDeclaredMethod(String name,
						Class... parameterTypes)
public Method[] getMethods()
public Method getMethod(String name,
                        Class... parameterTypes)

获取成员变量信息

public Field getField(String name)
public Field[] getFields()
public Field[] getDeclaredFields()

总结:反射其实就是在程序运行期创建对象的方法,也成为动态创建对象,与此相对的是new的静态创建对象,new是在编译期间创建对象的,增加了.class文件的体积,把一些事情给计算机做岂不是更好?

参考:

  • Java反射机制详解
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/682640.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号