package org.burning.sport.javase.classloader;

public class ClassLoaderMain {
public static void main(String[] args) { ClassLoaderMain clm = new ClassLoaderMain();
//1.使用Class静态方法Class.forName
// clm.loadClassMethod1(); //2.使用ClassLoader
// clm.loadClassMethod2(); //3. 使用类.class方式
// clm.loadClassMethod3(); //4. 使用对象的getClass方法
clm.loadClassMethod4();
} public void loadClassMethod1() {
try {
Class<?> clazz = Class.forName("org.burning.sport.javase.classloader.ClassLoaderModel");
ClassLoaderModel clm
= (ClassLoaderModel)clazz.newInstance();
System.out.println(clm);
} catch (Exception e) {
e.printStackTrace();
}
} public void loadClassMethod2() {
ClassLoader cl = this.getClass().getClassLoader();
try {
Class<?> clazz = cl.loadClass("org.burning.sport.javase.classloader.ClassLoaderModel");
ClassLoaderModel clm = (ClassLoaderModel) clazz.newInstance();
System.out.println(clm);
} catch (Exception e) {
e.printStackTrace();
}
} public void loadClassMethod3() {
Class<?> clazz = ClassLoaderModel.class;
try {
ClassLoaderModel str = (ClassLoaderModel)clazz.newInstance();
System.out.println(str);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} public void loadClassMethod4() {
ClassLoaderModel clm = new ClassLoaderModel();
Class<?> clazz = clm.getClass();
try {
ClassLoaderModel ss = (ClassLoaderModel)clazz.newInstance();
System.out.println(ss);
} catch (Exception e) {
e.printStackTrace();
} }
}  https://gitee.com/play-happy/base-project

Class.forName()和ClassLoader.loadClass()区别

  •   Class.forName():将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块;
  •   ClassLoader.loadClass():只干一件事情,就是将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块。
  •   Class.forName(name,initialize,loader)带参函数也可控制是否加载static块。并且只有调用了newInstance()方法采用调用构造函数,创建类的对象 。

参考:

  【1】博客,http://www.cnblogs.com/ityouknow/p/5603287.html

JVM-类的四种载入方式的更多相关文章

  1. 领域模型中的实体类分为四种类型:VO、DTO、DO、PO

    http://kb.cnblogs.com/page/522348/ 由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念: 概念: V ...

  2. 域模型中的实体类分为四种类型:VO、DTO、DO、PO

    经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析. 得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应 ...

  3. 关于fmri数据分析的两大类,四种方法

    关于fmri数据分析的两大类,四种方法: 数据驱动: tca:其实这种方法,主要是提取时间维的特征.如果用它来进行数据的分析,则必须要利用其他的数据方法,比如结合ICA. ica:作为pca的一般化实 ...

  4. 转:领域模型中的实体类分为四种类型:VO、DTO、DO、PO

    经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析.得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应于 ...

  5. jvm锁的四种状态 无锁状态 偏向锁状态 轻量级锁状态 重量级锁状态

    一:java多线程互斥,和java多线程引入偏向锁和轻量级锁的原因? --->synchronized是在jvm层面实现同步的一种机制.  jvm规范中可以看到synchronized在jvm里 ...

  6. UML类图中类与类的四种关系图解

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  7. JVM探秘:四种引用、对象的生存与死亡

    本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. Java虚拟机的内存区域中,程序计数器.Java栈和本地方法栈是线程私有的,随线程而生 ...

  8. Yii中实例化类的四种方式

    1.最简单的也是最基本的,大家都会的一种 use yii\caching\FileCache; $cache = new FileCache(); $cache->set("name& ...

  9. 类与接口(二)java的四种内部类详解

    引言 内部类,嵌套在另一个类的里面,所以也称为 嵌套类; 内部类分为以下四种: 静态内部类 成员内部类 局部内部类 匿名内部类 一.静态内部类 静态内部类: 一般也称"静态嵌套类" ...

随机推荐

  1. Java异常的正确使用姿势

    最近在项目代码中,遇见异常滥用的情形,会带来什么样的后果呢? 1. 代码可读性变差,业务逻辑难以理解 异常流与业务状态流混在一起,无法从接口协议层面理解业务代码,只能深入到方法(Method)内部才能 ...

  2. vue实现星级评价效果

    希望对你们有用,已经自己试过可以的才发布出来的 效果如下: html: <template> <div class="evaStar"> <ul cl ...

  3. 纯CSS二级纵向菜单

    纯CSS二级纵向菜单 <body> <div class="divda"> <div class="nav"> <ul ...

  4. 总结基础OOP(面向对象)

    OOP其实也就是面向对象编程.  一:什么是对象:  我们最常见的理解方式无非是:对象(object)是任何看得见.摸得着.感觉得到,可以获得的东西,有自己的标识的任何东西.对象是某一类的事物的具体个 ...

  5. 工作流调度器azkaban(以及各种工作流调度器比对)

    1:工作流调度系统的作用: (1):一个完整的数据分析系统通常都是由大量任务单元组成:比如,shell脚本程序,java程序,mapreduce程序.hive脚本等:(2):各任务单元之间存在时间先后 ...

  6. while100以内的偶数

    #显示100以内的偶数 #声明i i = 1 #开始循环条件为i不等于100,执行while代码块 while i != 100: #给i加1 i +=1 #如果循环到此时i的取余运算为0则打印i i ...

  7. scrollify - 滚动条方式的全屏滚动

    jQuery Scrollify Version Beta v1.0.5 Date:2017-04-25 23:45 源代码 (function($, window, document) { 'use ...

  8. [译]Pandas常用命令对照清单

    我们在内容中使用以下简写: df pandas的DataFrame对象 s pandas的Series对象 导入以下包开始 import pandas as pd import numpy as np ...

  9. 原来你是这样的JAVA[03]-继承、多态、抽象类

    一.继承 Java中的继承使用关键字extends ,跟C#的语法略有差别. 1.子类构造器 java会自动在子类的构造器中插入对父类构造器的调用,也就是说在子类可以访问父类之前已经完成了父类的初始化 ...

  10. spring boot +mysql + mybatis + druid的整理(一)——单数据源

    一,使用spring boot脚手架搭建spring boot框架生成maven项目 如下图所示: 设置自定义的坐标,即左侧的Group和Artifact,右侧可以搜索添加一些依赖,搜索不到的可以在p ...