Java语言中的反射机制是一个对开发者很有用的机制,它可以帮助开发者设计出优越的框架,大大提高开发的效率。
反射机制的入口为Class
对象,那如何才能获取到Class
对象呢?
方法有以下三种:
- 类.class
- 对象.getClass()
- Class.forName("className")
类.class
这种方式最直接,但仅能获取到我已知的类的Class
对象,也就是工程内用过的类的对象都可以通过类.class
方式获取其Class
对象,但是这种方式有一个不足就是对于未知的类,或者说不可见的类是不能获取到其Class
对象的。
对象.getClass()
Java中的祖先类Object
提供了一个方法getClass()
来获取当着实例的Class
对象,这种方式是开发中用的最多的方式,同样,它也不能获取到未知的类,比如说某个接口的实现类的Class
对象。
Class.forName("className")
这种方式是可以获取到任何类的Class
对象,前提是该类存在,否则会抛出ClassNotFoundException
异常。通过这种方式,我们只需要知道类的名称(完全限定名)即可获取到其Class
对象(如果存在的话)。