获取java运行类型信息有两种方法
1,RTTI(Run-Time Type Identification)运行时类型信息识别
2, java反射机制

1,RTTI

为什么需要RTTI?
在运行时需要识别每一个对象的具体类型

eg:
一个Shape类型的数组,有一个Circle对象进入数组时为Circle类。取出时Java虚拟机自动把类型转回Shape类型

在java中,所有的类型转换都是在运行时操作的,并且进行正确性检查

2,Java反射机制

在运行时,对于任何一个类,都知道这个类的属性和方法;对于任何一个对象,都能调用这个对象的任意方法和属性,对于这种动态获取信息以及动态调用对象的功能称为Java语言的反射机制。

利用Class类创建实例

Class cla = Class.forName("A");//得到A类的Class对象
Object a = cla.newInstance();//返回Object类的实例,其具体类型为A

Method类的invoke反射
invoke()对带有指定参数的指定对象,调用这个Method表示的方法,就可以把目标对象的方法执行出来

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

class ClassA {
    public void add(int x, int y) {
        System.out.println("x + y = " + (x + y));
    }

}
public class TestInstance {

    public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException {
        //得到方法
        Method mth = ClassA.class.getMethod("add", new Class[]{int.class, int.class});
        //执行方法
        mth.invoke(ClassA.class.newInstance(), 1, 2);
    }

}

输出

x + y = 3