反射

什么是反射?

反射就是Reflection,Java的反射是指程序在运行期可以拿到一个对象的所有信息。

正常情况下,如果我们要调用一个对象的方法,或者访问一个对象的字段,通常会传入对象实例:

  1. // Main.java
  2. import com.itranswarp.learnjava.Person;
  3. public class Main {
  4. String getFullName(Person p) {
  5. return p.getFirstName() + " " + p.getLastName();
  6. }
  7. }

但是,如果不能获得Person类,只有一个Object实例,比如这样:

  1. String getFullName(Object obj) {
  2. return ???
  3. }

怎么办?有童鞋会说:强制转型啊!

  1. String getFullName(Object obj) {
  2. Person p = (Person) obj;
  3. return p.getFirstName() + " " + p.getLastName();
  4. }

强制转型的时候,你会发现一个问题:编译上面的代码,仍然需要引用Person类。不然,去掉import语句,你看能不能编译通过?

所以,反射是为了解决在运行期,对某个实例一无所知的情况下,如何调用其方法。

reflection

读后有收获可以支付宝请作者喝咖啡,读后有疑问请加微信群讨论

反射 - 图2反射 - 图3