Java基础之反射原理与用法详解
本文实例讲述了Java基础之反射原理与用法。分享给大家供大家参考,具体如下:
1.什么是反射?
反射其实就是动态的加载类,我们在写JDBC的时候加载驱动Class.forName("xxx")时就涉及到了反射。
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
2.反射机制能做什么?
1.在运行时判断任意一个对象的所属的类Class。
2.在运行时判断构造任意一个类的对象Constructor。
3.在运行时判断任意一个类所具有的成员变量Field和方法Method。
4.在运行时调用任意一个对象的方法。method.invoke(object,args)
3.反射机制相关的API
获得完整的包名和类名
Student.java
packagecom.reflect.test;
publicclassStudent{
privateintid;
privateStringname;
publicStudent(){}
publicStudent(intid,Stringname){
super();
this.id=id;
this.name=name;
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
@Override
publicStringtoString(){
return"Student[id="+id+",name="+name+"]";
}
}
Test.java
packagecom.reflect.test;
publicclassTest{
Studentstu=newStudent();
publicstaticvoidmain(String[]args){
Testtest=newTest();
test.getClassName();
}
//获得完整的包名和类名
publicvoidgetClassName(){
System.out.println(stu.getClass().getName());
}
}
运行结果
com.reflect.test.Student
获取Class的三种方法
publicstaticvoidmain(String[]args){
Testtest=newTest();
test.getStudentClass();
}
//获取Class对象的三种犯法
publicvoidgetStudentClass(){
//第一种方法,forName
Class>class1;
try{
class1=Class.forName("com.reflect.test.Student");
System.out.println("class1:"+class1);
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
//第二种方法,class
Class>class2=Student.class;
System.out.println("class2:"+class2);
//第三种方法,getClass()
Studentstu1=newStudent();
Class>class3=stu1.getClass();
System.out.println("class3:"+class3);
}
运行结果
class1:classcom.reflect.test.Student
class2:classcom.reflect.test.Student
class3:classcom.reflect.test.Student
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。