Flask接口签名sign原理与实例代码浅析
211
2022-12-15
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
package com.reflect.test;
public class Student {
private int id;
private String name;
public Student() {}
public Student(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
publhttp://ic String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}
}
Test.java
package com.reflect.test;
public class Test {
Student stu = new Student();
public static void main(String[] args) {
Test test = new Test();
test.getClassName();
}
//获得完整的包名和类名
public void getClassName() {
System.out.printhttp://ln(stu.getClass().getName());
}
}
运行结果
com.reflect.test.Student
获取Class的三种方法
public static void main(String[] args) {
Test test = new Test();
test.getStudentClass();
}
//获取Class对象的三种http://犯法
public void getStudentClass() {
//第一种方法,forName
Class> class1;
try {
class1 = Class.forName("com.reflect.test.Student");
System.out.println("class1:"+class1);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//第二种方法,class
Class> class2 = Student.class;
System.out.println("class2:"+class2);
//第三种方法,getClass()
Student stu1 = new Student();
Class> class3 = stu1.getClass();
System.out.println("class3:"+class3);
}
运行结果
class1:class com.reflect.test.Student
class2:class com.reflect.test.Student
class3:class com.reflect.test.Student
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~