## 软件包 java.lang.reflect 的描述
提供类和接口,以获得关于类和对象的反射信息。
在安全限制内,反射允许编程访问关于加载类的字段、方法和构造方法的信息,
并允许使用反射字段、方法和构造方法对其底层对等项进行操作。
Java的反射机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,
可以调用任意一个对象的属性和方法
jdbc(数据库连接技术)在加载驱动时运用到了反射技术
然后我们了解一下java程序运行过程和使用反射后java程序的运行过程:
java程序运行过程:Student.java==>编译==>Student.class==>java虚拟机==>运行程序
java放射: ?==>编译器==>运行程序==>编译器
反射机制和java.lang.Class<T>这个类息息相关,
因为z整个反射机制j就是基于对Class对象的操作,了解反射之前,我们需要先了解这个类.
Class这个类很特殊的一个名字对吧,那么它的意义肯定也非同一般。一句话,Class这个类就代表z正在运行的java应用程序的类和接口。
如果把一个类比作成一个人,那么Class对象就相等于这个人的资料卡片,关于这个人的一起都在这个小小的资料卡片中存储着。
下面是代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class work2 {
public static void main(String[] args) {
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println("请输入任意类的名字");
String classname=br.readLine();
Class cs=Class.forName(classname);
while (cs!=null){
System.out.println(cs);
cs=cs.getSuperclass();
}
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
package work1;
import java.util.List;
public class work1 {
public static void main(String[] args) {
Class cs= List.class;
System.out.println("相关信息:");
System.out.println("类名:"+cs.getName());
System.out.println("包名:"+cs.getPackage());
System.out.println("是否为接口:"+cs.isInterface());
System.out.println("是否为数组:"+cs.isArray());
System.out.println("是否为基本类型:"+cs.isPrimitive());
System.out.println("获得父类的class对象:"+cs.getSuperclass());
}
}
运行图:
心得总结:每天积累一点点,这样就不会掉头发了。
原文:https://www.cnblogs.com/778xbb/p/13542892.html