Java反射学习笔记

℡╲_俬逩灬. 提交于 2019-12-02 11:54:07

感谢慕课网Cedar老师的视频!

https://www.imooc.com/learn/199

Java-reflect专题

Class类的使用

1.在面向对象的世界里,万事万物皆对象。

类是谁的对象呢??? 类是java.lang.Class类的实例对象

代码实例:

package com.cj.study.test1;

public class ClassDemo1 {

    public static void main(String[] args) {
        //Foo的实例如何表示
        Foo foo = new Foo();

        //Foo这个类也是一个实例对象,Class类的实例对象,如何表示呢?
        //任何一个类都是Class的实例对象,这个实例对象有三种表示方式

        //第一种表示方式--->实际在告诉我们任何一个类都有一个隐含的静态成员变量
        Class c1 = Foo.class;

        //第二种表示方式--->已经知道该类的对象通过getClass方法
        Class c2 = foo.getClass();

        /*
         * 官网c1,c2表示了Foo类的类类型(class type)
         * 万事万物皆对象
         * 类也是对象,是Class类的实例对象
         * 这个对象我们称为该类的类类型
         */

        //不管c1 or c2都代表了Foo类的类类型,一个类只可能是Class类的一个实例对象
        System.out.println(c1 == c2); //打印结果:true

        //第三种表达方式
        Class c3 = null;

        try {
            c3 = Class.forName("com.cj.study.test1.Foo");
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println(c2 == c3); //打印结果:true

        //我们完全可以通过类的类类型创建类的实例对象-->通过c1 or c2 or c3创建Foo类的实例对象

        try {
            Foo foo1 = (Foo)c3.newInstance(); //需要有无参构造器的方法
            foo1.print(); //打印输出:foo
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class Foo {

    void print(){
        System.out.println("foo");
    }
}

 

方法的反射

打发大水

成员变量的反射

啥打法上

构造函数的反射

范德萨发

Java类的加载机制

啥的范德萨

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!