为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
反射——Java高级开发必须懂的_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

反射——Java高级开发必须懂的

Cedar
难度入门
时长 1小时20分
  • 有观点把void也归为基本数据类型

    void.class

    查看全部
  • double.class不等于Double.class

    查看全部
  • 功能性的类尽量用动态加载

    查看全部
  • 动态加载,用哪个加载哪个

    查看全部
  • 编译时刻加载类为静态加载类

    运行时刻加载类为动态加载类

    查看全部
  • 可以通过一个类的类类型创建该类的对象实例。

    前提是该类具有无参的构造方法

    查看全部
    0 采集 收起 来源:Class类的使用

    2018-04-27

  • 获得类类型的3种方法

    查看全部
    0 采集 收起 来源:Class类的使用

    2018-04-27

  • 一个类只可能是Class类的一个实例对象

    class Cat{}

    Cat.class == new Cat().getClass() 成立

    查看全部
    0 采集 收起 来源:Class类的使用

    2018-04-27

  • 一个类的类类型 (class type)是一个对象,Class类的对象

    查看全部
    0 采集 收起 来源:Class类的使用

    2018-04-27

  • 类是java.lang.Class类的实例对象

    任何类都是Class类的实例对象

    查看全部
    0 采集 收起 来源:Class类的使用

    2018-04-27

  • java中静态成员和普通数据类型不是面向对象的

    查看全部
    0 采集 收起 来源:Class类的使用

    2018-04-27

  • Class类

    面向对象编程,一切皆对象。

    静态成员,基本数据类型不是面向对象的

    写的每一个类都是java.lang.Class的实例对象

    Class对象只有java的虚拟机可以创建其实例化对象,其构造器是私有的

    任何一个类都是Class类的实例对象,这个实例对象有三种表示方式

    举例:

    Foo foo1=new Foo();

    Foo是Class类的实例对象,称之为Foo类的类类型;可用以下三种表示法:

    1.  Class c1=Foo.class(任何一个类都有一个静态成员变量class)

    2.已知一个类的对象

    Class c2=foo1.getClass();

    c1,c2表示了Foo类的类类型(class type)

    一个类只有一个类类型,只是表达方式不同

    3. Class c3=null;

    try{

    c3=Class.forName("Foo");

    }catch(ClassNotFoundException e){

    e.printStackTrace();

    }

    可以通过类的类类型创建该类的对象实例,通过c1orc2orc3创建Foo的对象

    Foo foo=(Foo)c1.newInstance();需要无参数的构造方法

    动态加载类

    区分编译/运行

    编译时加载类称静态加载类,运行时加载类是动态加载类 

    new创建对象 是静态加载类,在编译时刻就需要加载所有可能使用到的类

    通过动态加载类解决静态加载存在的问题

    class OfficeBetter

    {

    public static void main(String[] args)

    {

    try

    {Class c=Class.forName(args[0]);//动态加载类,在运行时加载。

    //通过类类型创建对象

    OfficeAble oa=(OfficeAble)c.newInstance();

    //interface OfficeAble

    {

    public void start();

    }

    oa.start();

    }

    catch(Exception e)

    {

    e.printStackTrace();

    }


    查看全部
  • 一个类只可能是Class类的一个实例对象

    查看全部
    0 采集 收起 来源:Class类的使用

    2018-04-24

  • 编译时刻加载类是静态加载类,运行时刻加载类是动态加载类 new 创建对象是静态加载类,在编译时刻就需要加载所有的可能使用到的类通过Class a=Class.forName(arg[0]);此时为动态加载,因为编译时不知道使用哪个类,因此编译没有加载任何类,通过编译。运行时,根据 Java OfficeBetter Word (Word为arg[0],也是类类型),去确定a是哪个类。这就是动态加载。如果word不存在,此时运行会报错。这就是为何有时候会出现编译通过,运行报错的原因。 动态加载一个好处,就是可以随时增加需要编译的类。例如没有excel类,只有word类,也可以运行,需要excel类时再由程序员写此类(为了能统一控制,word类、excel类需要继承同一个父类或者继承同一个接口)。

    查看全部
  • 万事万物皆为对象,类也是对象,任何一个类都是Class类的对象。 Class c1就声明了一个Class类的实例对象,但是不能通过new关键字来创建,而是有一下三种方法创建。 1、Class c1 = Foo.class;//任何一个类都有一个隐含的静态成员变量class,如果Foo已经存在,可以用这种方法来创建Foo的类类型(class type),即Foo类的类类型就是Class类的一个实例对象。 2、Class c2 = foo.getClass();//如果Foo类的对象foo已经存在,可以通过这种方法来创建Foo类的类类型。 并且,c1==c2是true的,因为任何一个类只有一个类类型。 3、Class c3 = null; c3 = Class.forName("com.imooc.reflect.Foo");//通过Foo的全称来创建 可知,c2==c3也是true的。 而且,可以用类类型来创建Foo的实例对象,如下 Foo foo1 = (Foo)c1.newInstance();//前提是Foo有无参的构造方法

    查看全部
    0 采集 收起 来源:Class类的使用

    2018-04-23

举报

0/150
提交
取消
课程须知
童鞋们,学习本课程前需要熟悉Java面向对象的思想,并能掌握Java IO输入输出流、集合和泛型等知识。可参考慕课网Java入门的一、二、三季以及我的文件我做主——Java IO流课程。
老师告诉你能学到什么?
1、能够理解并应用反射机制。 2、能够了解反射机制在集合泛型中的应用。 3、有利于更好的学习框架等Java高级技术。
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!