Java基础学习:注解和反射06(获得反射对象)
-
获得反射对象:
-
Java反射机制提供的功能:
-
在运行时判断任意一个对象所属的类;
-
在运行时构造任意一个类的对象;
-
在运行时判断任意一个类所具有的成员变量和方法;
-
在运行时获取泛型信息
-
在运行时调用任意一个对象的成员变量和方法
-
在运行时处理注解
-
生成动态代理
-
-
反射的优点和缺点:
-
优点:可以实现动态创建对象和编译,体现出很大的灵活性;
-
-
-
反射的主要API:
-
java.lang.Class:代表一个类
-
java.lang.reflect.Method:代表类的方法
-
java.lang.reflect.Field:代表类的成员变量
-
java.lang.reflect.Constructor:代表类的构造器
-
-
代码案例:反射获取Class对象
import java.io.ObjectInputStream;
/**
* 什么是反射:
*/
public class Test01 extends Object {
public static void main(String[] args) throws ClassNotFoundException {
//通过反射获取类的Class对象
Class c1 = Class.forName("com.ljx5.demo02.User");
System.out.println(c1);//class com.ljx5.demo02.User
Class c2 = Class.forName("com.ljx5.demo02.User");
Class c3 = Class.forName("com.ljx5.demo02.User");
Class c4 = Class.forName("com.ljx5.demo02.User");
//一个类在内存中只有一个Class对象
//一个类被加载后,类的整个结构都会被封装在Class对中;
System.out.println(c2.hashCode());//21685669
System.out.println(c3.hashCode());//21685669
System.out.println(c4.hashCode());//21685669
}
}
//实体类pojo :实体类一般是和数据库去映射
class User{
private String name;
private int age;
private int id;
public User(String name, int age, int id) {
this.name = name;
this.age = age;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
//方便程序调试