zoukankan      html  css  js  c++  java
  • java反射系列二

     一.Class类

    package reflect;
    /*
    *java.lang.class是反射的源头
    *我们创建了一个类,通过编译(javac.exe),生成对应的.class文件,之后我们使
    *用java.exe加载(JVM的类加载器完成的)此.class文件
    *此.class文件加载到内存以后,就是一个运行时类存在缓存区,那么这个运行时
    *类本身就是一个Class的实例
    *1.每个运行时类只能加载一次
    *2.有了Class的实例以后,我们才可以进行如下的操作
    *  1)创建对应的运行时类的对象
    *  2)获取对应的运行时类的完整结构(属性.方法.构造器.内部类.父类.所在的包.异常...)
    *  3)调用对应的运行时类的指定结构(属性.方法.构造器)
    *  4)反射的应用:动态代理
    */
    public class TestReflections {
        public static void main(String[] args) throws ClassNotFoundException {
            TestReflections t = new TestReflections();
             t.test();    
        }
        //如何获取Class的实例(掌握三种)
        public void test() throws ClassNotFoundException {
            //1.调用运行时类本身的.class属性
            Class cla = Person.class;        
            //getName() 返回由 类对象表示的实体(类,接口,数组类,原始类型或空白)的名称,作为 String 。        
            System.out.println(cla.getName());
            
            //2.通过运行时类的对象获取
            Person p = new Person();
            Class claz = p.getClass();
            System.out.println(claz.getName());
            
            //3.通过class的静态方法获取
            String className = "reflect.Person";
            //forName(String className)返回与给定字符串名称的类或接口相关联的 类对象。
            Class clazz = Class.forName(className);
            System.out.println(clazz);
            
            //4.通过类的加载器
            //getClassLoader() 返回类的类加载器。
            ClassLoader classloader = this.getClass().getClassLoader();
            //loadClass(String name)用指定的binary name 加载课程
            Class clazzs = classloader.loadClass(className);
            System.out.println(clazzs.getName());
        }
    }

  • 相关阅读:
    Thinking in Java Reading Note(9.接口)
    Thinking in java Reading Note(8.多态)
    Thinking in Java Reading Note(7.复用类)
    SQL必知必会
    Thinking in Java Reading Note(5.初始化与清理)
    Thinking in Java Reading Note(2.一切都是对象)
    鸟哥的Linux私房菜笔记(1.基础)
    Thinking in Java Reading Note(1.对象导论)
    CoreJava2 Reading Note(2:I/O)
    CoreJava2 Reading Note(1:Stream)
  • 原文地址:https://www.cnblogs.com/zjm1999/p/10332230.html
Copyright © 2011-2022 走看看