1、使用Class类的静态方法Class.forName("xxxx");

  新建一个要想要获取的类

package org.burning.sport.javase.classloader;

public class ClassLoaderModel {
}
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();
} 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();
}
}
}

2、使用ClassLoader

package org.burning.sport.javase.classloader;

/**
* 类的载入方式
*/
public class ClassLoaderMain {
public static void main(String[] args) {
ClassLoaderMain clm = new ClassLoaderMain();
//2.使用ClassLoader
clm.loadClassMethod2();
} 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();
}
}
}

3、使用 类.class

package org.burning.sport.javase.classloader;

/**
* 类的载入方式
*/
public class ClassLoaderMain {
public static void main(String[] args) {
ClassLoaderMain clm = new ClassLoaderMain();
//3. 使用类.class方式
clm.loadClassMethod3(); } 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();
}
}
}

4、使用对象的getClass方法

package org.burning.sport.javase.classloader;

/**
* Created by lisen on 2017/7/27.
* 类的载入方式
*/
public class ClassLoaderMain {
public static void main(String[] args) {
ClassLoaderMain clm = new ClassLoaderMain();
//4. 使用对象的getClass方法
clm.loadClassMethod4();
} 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

JavaSE-反射-获取类或者对象的四种方法的更多相关文章

  1. MYSQL获取自增ID的四种方法

    MYSQL获取自增ID的四种方法 1. select max(id) from tablename 2.SELECT LAST_INSERT_ID() 函数 LAST_INSERT_ID 是与tabl ...

  2. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  3. YSQL获取自增ID的四种方法(转发)

    YSQL获取自增ID的四种方法(转发) 1. select max(id) from tablename 2.SELECT LAST_INSERT_ID() 函数 LAST_INSERT_ID 是与t ...

  4. DBS-MySQL:MYSQL获取自增ID的四种方法

    ylbtech-DBS-MySQL:MYSQL获取自增ID的四种方法 1.返回顶部 1. 1. select max(id) from tablename 2.SELECT LAST_INSERT_I ...

  5. 在Action类中获得HttpServletResponse对象的四种方法

    在struts1.xAction类的execute方法中,有四个参数,其中两个就是response和request.而在Struts2中,并没有任何参数,因此,就不能简单地从execute方法获得Ht ...

  6. Java反射获取类和对象信息全解析

    反射可以解决在编译时无法预知对象和类是属于那个类的,要根据程序运行时的信息才能知道该对象和类的信息的问题. 在两个人协作开发时,你只要知道对方的类名就可以进行初步的开发了. 获取类对象 Class.f ...

  7. 回忆(一):反射中获得class对象的三种方法

    package reflex; /* * 反射:就是通过class文件对象 去使用该文件中的成员 * 变量,构造方法,成员方法. * * Person p = new Person(); p.使用 * ...

  8. Java遍历Map对象的四种方法

    在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHa ...

  9. ASP.NET Core 释放 IDisposable 对象的四种方法

    本文翻译自<Four ways to dispose IDisposables in ASP.NET Core>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! IDispos ...

随机推荐

  1. File System 之本地文件系统

    上一篇文章提到了,最近做一个基于 File System/IndexedDB的应用,上一篇是定额和使用的查询. 因为LocalFileSystem只有chrome支持,有点尴尬,如果按需加载又何来尴尬 ...

  2. Pandas库的使用--Series

    一.概念 Series相当于一维数组. 1.调用Series的原生方法创建 import pandas as pd s1 = pd.Series(data=[1,2,4,6,7],index=['a' ...

  3. shell中的循环语句while

    循环语句的结构: ------------| while 条件        | do | 需要执行的命令   | done  | -----------| 例如: 1.while一直循环 2.whi ...

  4. [Spark内核] 第36课:TaskScheduler内幕天机解密:Spark shell案例运行日志详解、TaskScheduler和SchedulerBackend、FIFO与FAIR、Task运行时本地性算法详解等

    本課主題 通过 Spark-shell 窥探程序运行时的状况 TaskScheduler 与 SchedulerBackend 之间的关系 FIFO 与 FAIR 两种调度模式彻底解密 Task 数据 ...

  5. js 的数学处理方法

    1.javascript取整方法floor.round.ceil floor向下取整: Math.floor(0.20); Math.floor(0.90); Math.floor(-0.90); / ...

  6. UINavigationController 返回手势与 leftBarButtonItem

    UINavigationController 返回手势与 leftBarButtonItem UINavigationController 自带从屏幕左侧边缘向右滑动的返回手势,可以通过这个手势实现 ...

  7. python调用metasploit里的MS-17-010模块进行漏洞攻击

    起因:看各位大佬们写的shellcode厉害的一匹,可惜自己没学C和汇编 也看不懂shellcode,只能写一个调用metasploit里的模块进行攻击了. 0x01 攻击机:192.168.223. ...

  8. lodash源码分析之缓存方式的选择

    每个人心里都有一团火,路过的人只看到烟. --<至爱梵高·星空之谜> 本文为读 lodash 源码的第八篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash gitb ...

  9. BOX

    题目连接:http://acm.tju.edu.cn/toj/showp2392.html2392.   Box Time Limit: 1.0 Seconds   Memory Limit: 655 ...

  10. CentOS 6.5 搭建 Zabbix

    CentOS 6.5 搭建 Zabbix 说明: 操作系统:CentOS 6.5 IP地址:192.168.21.127 Web环境:Nginx+MySQL+PHP zabbix版本:Zabbix 2 ...