JAVA中的反射相关方法使用

本文介绍了Java中的反射机制,包括如何通过class属性、对象的getClass()方法和Class的forName()方法获取class对象。详细讲述了如何处理私有构造方法的反射访问,并列举了获取成员变量的Field方法,如getFields(), getDeclaredFields(), getField(), getDeclaredField()等。同时,还提供了使用反射给对象成员变量赋值的步骤。" 7345494,607125,BIOS内存初始化解析,"['系统初始化', '内存管理', '硬件配置', 'BIOS编程']
摘要由CSDN通过智能技术生成

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

简而言之就是:反射通过拿到类的构造方法来创建对象

获取class类的对象:我们要想通过反射去使用一个类,首先我们要获取到该类的字节码文件对象,也就是类型为class类型的对象
三种方法获取class类型的对象:

  1. 使用类的class属性来获取该类对应的class对象,比如:student.class将会返回student类对应的class对象
 //使用类的class属性来获取该类对应的class对象
       Class<Student> c1 = Student.class;
       System.out.print(c1);
       
       Class<Student> c2 = Student.class;
       System.out.print(c1 == c2);
  1. 调用对象的getClass()方法,返回该对象所属类对应的class对象,该方法是object类中的方法,所有的java对象都可以调用该方法
  //调用对象的getClass()方法,返回该对象所属类对应的class对象,该方法是object类中的方法,所有的java对象都可以调用该方法

       Student s =new Student();
       Class<?extends Student > c3 = s.getClass();
       System.out.print(c1 == c3);
  1. 使用class类中的静态方法forName(string classname),该方法需要传入字符串参数,该字符串参数的值是某个类的全路径,也就是完整包名的路径
Class类中用于获取构造方法的方法
1.    Constructor<?>[] getDeclaredConstructors():返回所有构造方法对象的数组
2.   Constructor<?>[] getConstructors():返回所有公共构造方法对象的数组
3.    Constructor<T> getConstructor(Class<?>... parameterTypes) :返回单个公共构造方法对象
4.     Constructor<T> getDeclaredConstructor(类<?>... parameterTypes) :返回单个构造方法对象

 Constructor类中用于创建对象的方法
1. T newInstance():根据指定的构造方法创建对象

小练习:通过反射实现

Student s= new Student("小丁","40","西安");
System.out.print(s);
public static void main(String[] args)throws ClassNotFoundException,NoSuchMethodException,InstantiationException,InvocationTargetException,IllegalAccessException {
		//获取Class对象
        Class<?> c = Class.forName("Student");
        //基本数据类型也可以通过.class得到对应的class类型
        // public Student(String name,int age,String address)
        Cons
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值