反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法。
——百度百科
1.根据对象找到类
1 import java.util.Date; 2 3 public class TextReflection 4 { 5 public static void main(String[] args) throws Exception 6 { 7 Date date = new Date(); 8 Class<?> cls = date.getClass();//通过Java反射机制得到类的包名 9 System.out.println(cls); 10 } 11 }
getClass()方法是由Object类所定义的:public final Class<?>getClass(),此方法返回的对象类型为Class,而Class是反射操作的源头。
2.实例化一个对象
1 class Book 2 { 3 private String title; 4 private double price; 5 public void setPrice(double price) 6 { 7 this.price = price; 8 } 9 public void setTitle(String title) 10 { 11 this.title = title; 12 } 13 @Override 14 public String toString() 15 { 16 return "图书名称:"+this.title+",图书价格:"+this.price; 17 } 18 } 19 20 public class TextReflection 21 { 22 public static void main(String args[]) throws Exception 23 { 24 Class<?>cls = Class.forName("Book"); 25 Book book = (Book)cls.newInstance();//实例化一个对象 26 book.setTitle("基督山伯爵"); 27 book.setPrice(34.5); 28 System.out.println(book); 29 } 30 }
实例化一个对象现在有两个形式,一种是通过new关键字,另一种是通过反射机制完成。
先不写了,不太能看懂这反射机制到底是什么意思,让我再好好研究研究再写吧。
***参考文献:《Java从入门到精通》第二版、《Java语言程序设计》
看似简单的知识背后,承载的是收获和成长!