首先每一个类在实例化的时候都会产生一个.class文件。而Class对象既是将.class文件读入内存时,为它创建一个Class对象。
反射就是对Class对象进行操作。
1 package reflect.vo; 2 3 /** 4 * @author guohao 5 * java测试类Student 6 */ 7 public class Student { 8 private String name; 9 private int age; 10 private float score; 11 12 public Student() { 13 } 14 15 public String getName() { 16 return name; 17 } 18 19 public void setName(String name) { 20 this.name = name; 21 } 22 23 public int getAge() { 24 return age; 25 } 26 27 public void setAge(int age) { 28 this.age = age; 29 } 30 31 public float getScore() { 32 return score; 33 } 34 35 public void setScore(float score) { 36 this.score = score; 37 } 38 39 }
1.Object 类提供一个返回Class类对象的方法getClass()
1 package reflect.vo; 2 public class test { 3 4 public static void main(String[] args) throws Exception { 5 6 Student stu = new Student();//这一new 产生一个Student对象,一个Class对象。 7 Class cls = stu.getClass();//获取Class对象 8 System.out.println(cls.getName()); 9 10 }
2.利用“类.class”取得
1 package reflect.vo; 2 3 public class test { 4 5 public static void main(String[] args) throws Exception { 6 Class cls = Student.class; 7 System.out.println(cls); 8 } 9 }
3.利用Class类的static方法取得 Class.forName();
1 package reflect.vo; 2 3 public class test { 4 5 public static void main(String[] args) throws Exception { 6 Class<?> cls = Class.forName("reflect.vo.Student"); 7 System.out.println(cls); 9 } 10 }
三种方式常用第三种,第一种对象都有了还要反射干什么。
第二种需要导入类的包,依赖太强,不导包就抛编译错误。
一般都第三种,一个字符串可以传入也可写在配置文件中等多种方法。
注:最后一句话引用自 https://blog.csdn.net/sinat_38259539/article/details/71799078
原文地址:https://www.cnblogs.com/guohao134/p/9181363.html
时间: 2024-11-05 14:54:09