java RTTI与反射机制
1.RTTI(对象运行时类型标识)
RTTI可以知道不确定对象的类型,但是该类型必须在编译时已经知道,这样才能识别。
1 public class RTTITest { 2 public static void main(String []args) throws ClassNotFoundException, InstantiationException, IllegalAccessException{ 3 Animal animal=new Pig(); 4 animal.feature(); 5 Object pig=null; 6 if(animal instanceof Pig){ 7 pig=(Pig)animal; 8 System.out.println("true"); 9 } 10 Class pigNew=Class.forName("Pig"); 11 pig=pigNew.newInstance(); 12 } 13 } 14 class Animal{ 15 public void feature(){ 16 System.out.println("Animal"); 17 } 18 } 19 class Pig extends Animal{ 20 public void feature(){ 21 System.out.println("Pig"); 22 } 23 }
2.反射机制
在编译期间并未获得类的详细信息,在运行过程中从网络或者磁盘获得代表类的字节,通过反射机制可以讲字节流转化为对象。
在运行期间获得.class文件。在对象的序列化和JavaBean中有用。