java反射机制

 

1.对于类类型的理解

1.1在面向对象的世界里,万物皆是对象,只有两种特例;

一种是普通的数据类型如int i=5;不能称为对象,但它们有封装类如Integer,Short等

另一种是由static修饰的东西,它们不属于对象而是属于某个类

1.2那么我们说的类(class)是不是对象呢?

答案是:我们没创建一个类它本身就是一个对象,它是java.lang.class类的一个对象

假设我们现在新建了一个Foo类,那么我们会有三种方法获取Foo类的类类型

package com.imooc.deom1;

public class Foo {

    public static void main(String[] args) {
        Foo foo=new Foo();
        //第一种
        Class c1=foo.getClass();
        //第二种
        Class c2=Foo.class;
        //第三种
        try {
            Class c3=Class.forName("com.imooc.deom1.Foo");
      //打印结果是true,可以看出不管你用什么方法Foo类的类类型只有一个 System.out.println(c1
==c3); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

 

 2.动态加载类

在了解动态加载前,我们应该先了解编译和运行的概念

编译:是jvm(虚拟机)将xxx.java文件编译成xxx.class文件的过程

运行:是通过编译后实际使用这个点class文件的过程

想要验证使用记事本工具(Notepad++),先编译后运行

1、new 出来的都是静态加载类,一招出错,全盘皆输;
2、动态加载类
Class c = Class.forName(“类全名”);

OfficeAble oa = (OfficeAble)c.newInstance();//OfficeAble定义的功能类型接口就是让所有的类

实现我们的OfficeAble接口

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2016-08-10 19:40  我媳妇是可爱的小胖子  阅读(96)  评论(0)    收藏  举报