java反射路径_java反射

在java程序运行状态中,对于任意一个类,可以获取其所有的属性和方法,对于任意一个对象可以动态的调用其方法获取其属性。我们称这种特性为java反射。

应用:

在程序运行过程中,动态实现以下操作:

1)通过反射创建对象

a. Class.newInstance()

b. Construction.newInstance()

//通过反射创建对象//1、通过newInstance创建对象,调用无参构造

Student student=studentClass.newInstance();//2、通过构造器创建对象

Constructor constructor =studentClass.getDeclaredConstructor();//设置是否允许访问,当private方法设置为true后,可以直接调用

constructor.setAccessible(true);//通过构造器调用对象

Student student1 =constructor.newInstance();

Student student2=constructor.newInstance();

System.out.println(student1==student2);//false

2)通过反射获取对象的类型,属性,方法,构造

/**

* 演示获取类的各种信息*/

public static voidgetClassInfo() throws NoSuchFieldException {

Class studentClass = Student.class;//获取类上的注解

Annotation[] annotations=studentClass.getAnnotations();//根据名称获取单个属性

Field name=studentClass.getField("name");

name.setAccessible(true);

LogData annotation= name.getAnnotation(LogData.class);

Field[] fields= studentClass.getFields();//获取类中的public属性

Field[] declaredFields = studentClass.getDeclaredFields();//获取类中定义的所有属性//获取类的方法

Method[] methods = studentClass.getMethods();//获取类中的public的方法(包含父类方法)

Method[] declaredMethods = studentClass.getDeclaredMethods();//获取类中定义的所有方法//获取实现的接口

Class>[] interfaces =studentClass.getInterfaces();//获取类的父类

Class super Student> superclass =studentClass.getSuperclass();//包含包名的类名

String name1 =studentClass.getName();//不包含包名的类名

String simpleName =studentClass.getSimpleName();

}

3)动态调用对象的方法,获取对象的属性

4)获取方法或属性上的注解信息

反射中涉及到的常用类

1)    Class类:用来描述类信息的类

2)    Method类:用来描述方法的类

3)    Field类:用来描述属性的类

4)    Construction类:用来描述构造方法

获取Class对象的方式

1) 类名.class

2) 对象.getClass();

3) Class.forName(“类的全路径”)

//获取class对象,一个类只有一个Class对象

Class studentClass=Student.class;

Class extends Student> aClass=newStudent().getClass();

Class> aClass1=Class.forName("entity.Student");

System.out.println(studentClass==aClass);//true

System.out.println(studentClass==aClass1);//true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值