A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小鲁哥哥 于 2017-7-25 09:00 编辑

【黑马程序员济南】Java基础--反射之Class类



在我们黑马程序员java基础班的课程里,javaEE入门就是首先是创建class类,下面简单介绍一下Java 的Class类、类加载机制!!

一、Class类

1、class是一个类

2、对象照镜子后可以得到的信息:某个类的数据成员名、方法和构造器、某个类到底实现了哪些接口。

       3、对于每个类而言,JRE 都为其保留一个不变的 Class 类型的对象。一个 Class 对象包含了特定某个类的有关信息。
       4、Class 对象只能由系统建立对象
       5、一个类在 JVM 中只会有一个Class实例
       6、每个类的实例都会记得自己是由哪个 Class 实例所生成
(1)获取 Class 对象的方式
[AppleScript] 纯文本查看 复制代码
/**
 * @author  传智播客
 */
Class clazz = null;
/**
 * 1.得到 Class对象,有以下三种方式:
 */
//1.1直接通过类名.class的方法得到
clazz = Person.class;

//1.2通过对象调用getClass()方法获取
Object obj = new Person();
clazz = obj.getClass();

//1.3通过全类名的方式获取,用的较多
String className = "com.wang.reflection.
clazz = Class.forName(className);

(2)Class类的常用方法

[AppleScript] 纯文本查看 复制代码
/**     
* 2.利用类的全类名创建类的对象     
* Class 类的 newInstance()方法
*@author  传智播客    
*/
@Test    
public void test2() throws ClassNotFoundException,
            IllegalAccessException, InstantiationException {

    String className = "com.wang.reflection.Person";        
    Class clazz = Class.forName(className);

    //利用Class对象的newInstance()方法来创建类的一个对象
    //实际调用的是类的无参数的构造器
    //一般的,一个类声明了一个带参数的构造器,也要声明一个无参数构造器
    Object object = clazz.newInstance();
    System.out.println(object);
}

二、ClassLoader
类装载器是用来把类(class)装载进 JVM 的。
JVM 规范定义了两种类型的类装载器:
  • 启动类装载器(bootstrap)
  • 用户自定义装载器(user-defined class loader)
JVM在运行时会产生3个类加载器组成的初始化加载器层次结构 ,如下图所示:


  • 引导类加载器:用C++编写的,是JVM自带的类装载器,负责Java平台核心库,用来装载核心类库。该加载器无法直接获取
  • 扩展类加载器:负责jdk_home/lib/ext目录下的jar包或 –D java.ext.dirs 指定目录下的jar包装入工作库
  • 系统类加载器:负责java –classpath 或 –D java.class.path所指的目录下的类与jar包装入工作
如果大家想学习java基础的知识,欢迎大家可以去传智播客官网http://www.itheima.com/去了解java基础知识!






1 个回复

倒序浏览
给力!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马