反射的概述,访问方法【详细讲解】

反射

java是面向对象语言,java编译生成的字节码文件应该也是一个对象,这个对象不需要我们定义,
java已经自动定义好了一个类 叫 calss
class类时用来描述事物的,是java最基本的单位,类作为一个概念存在,概念本身也是一个对象
我们使用class类  来描述 这个概念类

反射的好处:通过反射可以获取到字节码文件对象,
使用这个字节码文件对象可以获取到一个类的素有信息,包括私有
【构造方法对象,成员变量对象,成员方法对象,访问权限修饰符对象...】

之前的做法;
new 对象, 
学习反射之后: 可以不需要显示出现学生类就能够创建学生类对象,并且可以动态创建对象,动态赋值,动态调用方法

相关对象
Class	 类对象
Constructor 	构造方法对象
Method	 成员方法对象
Field	 成员变量对象
Modifier 	访问权限修饰符对象
Array 	数组对象

如何获取到堆区中的字节码文件对象?
三种方式;
1.通过Object类的getClass方法
缺陷:不许要显示创建对象才能获取到对应的字节码文件对象
2,通过数据类型的class属性
缺点:必须在代码中硬编码,当生产环境下切换类的时候需要修改源代码
优点:
1,不需要创建对象
2,当一个方法的形参需要我们传入的是一个Class类型的时候,用方式二,方便
public void method(Class c){}
method(Student.class)
3,通过Class类的一个静态方法Class.forName()
static Class <?> forName ( String className)
学习目标:
1,通过反射随意的获取一个类的任意信息
2,通过反射书写相关简单的工具类
3,通过反射+注解能够编写简单的框架~~~

  
通过字节码文件对象来获取构造方法对象
Properties properties = new Properties();
properties.load(new FileReader("config/classinfo.properties"));
String classPath = properties.getProperty("className");
Class<?> c = Class.forName(classPath);

通过反射获取构造方法对象
Constructor<?>[] constructors = c.getConstructors();
获取所有公有修饰的构造方法对象数组
Constructor<?>[] constructors = c.getDeclaredConstrustors();
获取所有构造方法对象数组,包括私有
Constructor<?>[] constructors = c.getConstructor(Class<?>...parameterTypes);
获取无参,全参 构造方法对象
Constructor<?>[] constructors = c.getDeclaredConstructor(class<?>...parameterTypes);
获取私有构造方法对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值