Class 与 类加载

  • Class对象由JVM自动产生,每当一个类被加载时,JVM就自动为其生成一个Class对象,通过Class对象可以获得类的相关信息。
  • 将类信息读到内存中过程,称为类加载
  • Java在需要使用某个类时,才会将该类进行加载,而不是在程序启动时就加载所有的类。

  • 所谓真正需要是指生成类的对象或类被加载时 new ,  Class.forName() ,  ClassLoader

Ø加载class对象

有6种情况JVM会加载Class对象

  • 使用new关键字创建对象时。
  • 通过反射创建对象时。
  • 调用某个类的static方法时。
  • 调用某个类的static属性时。
  • 当初始化某个类的子类时。
  • 某个类标明为main() 函数类(启动类) 。

ØClass.forName加载类

  • 实现动态加载类
  • static Class forName(String name)
  • static Class forName(String name, boolean initialize, ClassLoader loader)
  • 类的具体路径 设为false代表在加载类时不会立即运行静态块,而会在使用类建立对象时才运行静态块。
  • 类加载器 Thread.currentThread().getContextClassLoader() —— 获得当前主线程的类加载器

Øjava代码 

public class Demo1 {
public static void main(String[] args) {
String s = new String("wenhaitao");
//1. getClass()
Class cls= s.getClass();
System.out.println("leiming" + cls.getName());
System.out.println("baoming" + cls.getPackage());
System.out.println("是否为接口:" + cls.isInterface());
System.out.println("是否为基本类型:" + cls.isPrimitive());
System.out.println("是否为数组:" + cls.isArray());
System.out.println("String类的父类:" + cls.getSuperclass()); //2.Class
Class cls1 = String.class;
System.out.println("类名:" + cls1.getName());
System.out.println("包名:" + cls1.getPackage());
System.out.println("是否为接口:" + cls1.isInterface());
System.out.println("是否为基本类型:" + cls1.isPrimitive());
System.out.println("是否为数组:" + cls1.isArray());
System.out.println("String类的父类:" + cls1.getSuperclass()); System.out.println(cls == cls1);
int a = 100;
System.out.println(int.class);
}
}

Ø获取一个对象的父类与实现接口

public class Demo4 {
public static void main(String[] args) {
Class clz;//类对象
ClassLoader cl, cl1;//类加载器 clz = String.class;
cl = clz.getClassLoader();//得到加载String类对象的类加载器
System.out.println("加载String类对象的加载器:" + cl);
//当类加载器为null的时候,表示的是BootStrapLoader System.out.println("******************************");
clz = Demo4.class;
cl = clz.getClassLoader();
System.out.println("加载Demo4类对象的类加载器:" + cl);
while(cl!=null) {
cl1 = cl;
cl = cl1.getParent();//得到父加载器
System.out.println(cl1+"的父加载器是:" + cl);
} }
}

  别荒废了最能拼的年纪,让自己整天无所事事。自己那么差又不努力,还有什么资格唉声叹气。

  为了自己想要的未来,无论现在有多难熬,都必须得满怀信心的坚持下去。

java_[类加载器]的更多相关文章

  1. java笔记--理解java类加载器以及ClassLoader类

    类加载器概述: java类的加载是由虚拟机来完成的,虚拟机把描述类的Class文件加载到内存,并对数据进行校验,解析和初始化,最终形成能被java虚拟机直接使用的java类型,这就是虚拟机的类加载机制 ...

  2. java类加载器及其委托机制

    1.什么是类加载器,类加载器父子结构.BootStrap-->ExtClassLoader-->AppClassLoader,级别依次降低 2.类加载器之间的父子关系和管辖范围 3.类加载 ...

  3. java类加载器加载文件

    例子:采用配置文件加反射的方式创建ArrayList和HashSet的实例对象. //第一种方式:类加载器加载文件 InputStream ips = ReflectTest2.class.getCl ...

  4. java自定义类加载器

    前言 java反射,最常用的Class.forName()方法.做毕设的时候,接收到代码字符串,通过 JavaCompiler将代码字符串生成A.class文件(存放在classpath下,也就是ec ...

  5. java类加载器深入研究

    看了下面几篇关于类的加载器的文章,豁然开朗.猛击下面的地址开始看吧. Java类加载原理解析      深入探讨 Java 类加载器 分析BootstrapClassLoader/ExtClassLo ...

  6. 黑马程序员——【Java高新技术】——类加载器

    ---------- android培训.java培训.期待与您交流! ---------- 一.概述 (一)类加载器(class loader) 用来动态加载Java类的工具,它本身也是Java类. ...

  7. [转载] Java高新技术第一篇:类加载器详解

    本文转载自: http://blog.csdn.net/jiangwei0910410003/article/details/17733153 首先来了解一下字节码和class文件的区别: 我们知道, ...

  8. Java虚拟机10:类加载器

    类与类加载器 虚拟机设计团队把类加载阶段张的"通过一个类的全限定名来获取此类的二进制字节流"这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类.实现这 ...

  9. [Java类加载器]Java中classLoader浅析.

    本文为在公司内部TD上写的一篇小文, 主要讲解java中classLoader基础知识, 现在拿来这里分享一下. 一.问题 请在Eclipse中新建如下类,并运行它: 1 package java.l ...

随机推荐

  1. Django中的CBV视图

    Web 开发是一项无聊而且单调的工作,特别是在视图功能编写方面更为显著.为了减少这种痛苦,Django植入了视图类这一功能,该功能封装了视图开发常用的代码,无须编写大量代码即可快速完成数据视图的开发, ...

  2. json 标准库

    1. 序列化的简单概念 2. json 标准库 2.1 json.dumps() 2.2 json.loads() 2.3 json.dump() 2.4 json.load() 1. 序列化的简单概 ...

  3. k8s configmap 挂载配置文件

    转自https://blog.csdn.net/weixin_34102807/article/details/85965725 1.新建ConfigMap apiVersion: v1 kind: ...

  4. java 读取ini文件

    1.情景:需要将硬代码写到文件中,这样以后改动只需改动灵活 1)txt文件,需要将这code字符串读到代码中,保存成数组 2)导包:pom.xml添加依赖: <dependency> &l ...

  5. 另类的曲线方式定时Start up/Shut down VM 的解决方案

    一,引言 最近看到一位小兄弟在为了做 Azure 云虚拟机的自动关机开启 在群里求助,最后也不知道结果咋样了. 至于他提到的利用 Automation Account 我是没有接触过,并且也没有看资料 ...

  6. Property Distribution(DFS)

    Property Distribution タナカ氏が HW アールの果樹園を残して亡くなりました.果樹園は東西南北方向に H×W の区画に分けられ.区画ごとにリンゴ.カキ.ミカンが植えられています. ...

  7. POJ 3228 二分最大流

    题意:       给你N个位置,每个位置都有金矿数量和仓库数量,然后位置和位置之间的距离给了出来,最后问你吧所有的金矿都放到库里面走的路径 最长的最短 是多少? 思路:      比较简单的一个题, ...

  8. Iptables防火墙实验

    先说明一下环境,这里有四台主机,中间的Centos充当防火墙.右上角的win XP和右下角的Rhel7充当服务器,最左边的win7充当主机.四者之间的网卡都已经配置好.而且我们已经在Centos6.5 ...

  9. Python中的socket网络模块

    目录 Socket 服务端(server.py) 客户端(client.py) socket中的一些常用方法 Socket 对象(内建)方法 Python Internet 模块 Python3 提供 ...

  10. John the Ripper破解密码

    目录 John the Ripper 破解Linux系统密码 破解Windows系统密码 John the Ripper John the Ripper是一个快速的密码破解工具,用于在已知密文的情况下 ...