package cn.jason.reflect;
import cn.jason.domain.Person;
public class ReflectDemo {
public static void main(String[] args) throws ClassNotFoundException {
/*
* 反射技术:动态的获取类以及类中的成员,并可以调用该类成员
* 以前是有什么类,就new什么对象。没有类,给什么类就new什么对象
*
* 无论new什么对象,都需要先获取字节码文件
* 如何获取呢?发现java已对字节码文件进行了描述用的class类完成的
*
* 如何获取一个字节码文件的对象呢?
*
* 方式一: Object getClass();方法。发现在反射技术里,该方法不合适,反射技术部明确具体类
*
* 方式二: 所有的数据类型都有自己对应的class对象,表示方式很简单。
* 每一个数据类型都有一个默认的静态的属性,.class,用该属性就可以获取到字节码文件对象。
* 虽然不用对象调用了,还是要用具体的类调用静态属性。
*
*/
// mathodDemo_1();
// mathodDemo_2();
mathodDemo_3();
}
* 反射技术:动态的获取类以及类中的成员,并可以调用该类成员
* 以前是有什么类,就new什么对象。没有类,给什么类就new什么对象
*
* 无论new什么对象,都需要先获取字节码文件
* 如何获取呢?发现java已对字节码文件进行了描述用的class类完成的
*
* 如何获取一个字节码文件的对象呢?
*
* 方式一: Object getClass();方法。发现在反射技术里,该方法不合适,反射技术部明确具体类
*
* 方式二: 所有的数据类型都有自己对应的class对象,表示方式很简单。
* 每一个数据类型都有一个默认的静态的属性,.class,用该属性就可以获取到字节码文件对象。
* 虽然不用对象调用了,还是要用具体的类调用静态属性。
*
*/
// mathodDemo_1();
// mathodDemo_2();
mathodDemo_3();
}
//获取三
public static void mathodDemo_3() throws ClassNotFoundException {
String className = "cn.jason.domain.Person";
Class clazz = Class.forName(className);
System.out.println(clazz);
}
public static void mathodDemo_3() throws ClassNotFoundException {
String className = "cn.jason.domain.Person";
Class clazz = Class.forName(className);
System.out.println(clazz);
}
//获取二
public static void mathodDemo_2(){
Class clazz1 = Person.class;
Class clazz2 = Person.class;
System.out.println(clazz1 == clazz2);
}
//获取class对象的方式一
public static void mathodDemo_1(){
Person p1 = new Person();
Class clazz1 = p1.getClass();
Person p2 = new Person();
Class clazz2 = p2.getClass();
System.out.println(clazz1 == clazz2);
}
}
public static void mathodDemo_2(){
Class clazz1 = Person.class;
Class clazz2 = Person.class;
System.out.println(clazz1 == clazz2);
}
//获取class对象的方式一
public static void mathodDemo_1(){
Person p1 = new Person();
Class clazz1 = p1.getClass();
Person p2 = new Person();
Class clazz2 = p2.getClass();
System.out.println(clazz1 == clazz2);
}
}