反射和RTTI的本质区别:
    RTTI是在编译的时间检查和打开.class文件的,而反射是在运行时候打开和检查.class文件
    一个是在编译是坚持类型信息,一个是在运行时坚持类型信息。
    Class类与java。long.reflect类库一起对反射的概念进行了支持,包含了Method、Constructor
    列:通过反射来拿到类中的方法(包括私有方法)

    1. package com.package14.Two;
    2. import java.lang.reflect.Method;
    3. class Moo{
    4. public void Sh1(){ };
    5. private void Sh2(){
    6. System.out.println("私有方法被调用");
    7. };
    8. }
    9. public class ShowMetheds {
    10. public static void main(String[] args) throws Exception {
    11. Class<?> c=Class.forName("com.package14.Two.Moo");
    12. Object o = c.newInstance();
    13. //拿到该类中所有public的方法(包括Object)
    14. for (Method method : c.getMethods()) {
    15. System.out.println(method);
    16. }
    17. //拿到类中私有的方法c.getDeclaredMethods()方法只拿到目标类中的方法(包含私有方法)
    18. for (Method declaredMethod : c.getDeclaredMethods()) {
    19. if (declaredMethod.toString().contains("Sh2")){
    20. //可以提高反射速度,原因是设置为true后则跳过了访问检查,即使private修饰的也可以访问。
    21. declaredMethod.setAccessible(true);
    22. declaredMethod.invoke(o);//调用了与Method对象关联的方法
    23. }
    24. }
    25. }
    26. }