`

Java.Lang.Class对象学习

阅读更多

java.lang.Class获取类装载器的过程

 

   /**
     * 返回此类的ClassLoader
     * 如果此类(例如java.lang.String)是由bootstrap ClassLoader装载的返回null
     * 原始类型返回null
     * 如果Class对象表示的是数组,则获得的ClassLoader是元素的ClassLoader
     * 例如: 
     * 1(new Test[10]).getClass().getClassLoader()返回null,因为元素是原始类型
     * 2(new String[10]).getClass().getClassLoader()返回null,因为String
     * 是由bootstrap ClassLoader装载的
     * 3(new Test[10]).getClass().getClassLoader()
     * 返回sun.misc.Launcher$AppClassLoader@e2eec8,Test是自定义的类
     * 
     */
    public ClassLoader getClassLoader() {
        ClassLoader cl = getClassLoader0();
        if (cl == null)
            return null;
        SecurityManager sm = System.getSecurityManager();
        if (sm != null) {
            ClassLoader ccl = ClassLoader.getCallerClassLoader();//获得调用者的类装载器
            //如果调用对象的类不是是由bootstrap ClassLoader,并且当前对象的类
            //与调用对象的类不是由同一类装载器装载,且当前对象的ClassLoader不是调用
            //对象的ClassLoader的上层(ClassLoader链结构的上层),则进行安全检查
            if (ccl != null && ccl != cl && !cl.isAncestor(ccl)) {
                sm.checkPermission(SecurityConstants.GET_CLASSLOADER_PERMISSION);
            }
        }
        return cl;
    }

    // Package-private to allow ClassLoader access
    native ClassLoader getClassLoader0();
 

 

分享到:
评论

相关推荐

    java.lang.OutOfMemoryError解决办法

    当应用程序创建大量对象,且这些对象生命周期较长,或者无法及时释放时,可能会导致堆内存溢出,表现为`java.lang.OutOfMemoryError: Java heap space`。为了解决这个问题,可以通过`-Xms`和`-Xmx`参数来设置堆的...

    java.lang.OutOfMemoryError处理错误

    java.lang.OutOfMemoryError处理错误 java.lang.OutOfMemoryError是Java虚拟机(JVM)中的一种常见错误,发生这种错误时,JVM将无法继续运行,程序将崩溃。这种错误的出现通常是由于Jvm的内存不足或内存泄露导致的...

    java.lang包介绍

    `java.lang`包中最基本的类是`Object`,它是所有类层次结构的根,而`Class`类的实例则代表运行时的类。 `java.lang`包包括以下关键类: 1. **Boolean**: 表示布尔值`true`和`false`。 2. **Long, Short, Byte, ...

    Java.lang.reflect 包下常用的类及方法简介

    - `Class`对象代表Java中的类型或类。每个类在内存中都有一个唯一的`Class`实例,可以通过`Class.forName()`方法获取,或者通过`Object.getClass()`方法从对象中获取。 - `getConstructors()`:返回类的所有公共...

    java.lang.Class类

    Class类的特点是没有公共构造方法,Class对象是在加载类时由Java虚拟机自动构造的,因此不能显式地声明一个Class对象。虚拟机为每种类型管理一个独一无二的Class对象,每个类(型)都有一个Class对象。 获取Class...

    java.lang.ClassNotFoundException: net.sf.ezmorph.MorpherRegistry

    `net.sf.ezmorph.MorpherRegistry` 类属于Ezmorph库,这是一个用于Java对象转换的开源库。它提供了一种方便的方式来将一种数据类型转换为另一种数据类型,特别在处理JSON数据时,可能需要用到Ezmorph进行数据类型的...

    java.lang.ClassNotFoundException: org.jdom.input.SAXBuilder 处理

    总之,解决“java.lang.ClassNotFoundException: org.jdom.input.SAXBuilder”问题的关键在于确保JDOM库被正确地包含在类路径中,同时检查代码中涉及的类名拼写是否准确。了解并熟练使用SAXBuilder可以帮助开发者...

    在Java中异常分析

    - **异常路径**:`java.lang.Object -> java.lang.Throwable -> java.lang.Exception -> java.lang.RuntimeException -> java.lang.IndexOutOfBoundsException -> java.lang.ArrayIndexOutOfBoundsException` ...

    java.lang.class源码-datanucleus-cache:修复java.lang.IncompatibleClassChange

    《深入解析Java.lang.Class源码:DataNucleus-Cache机制与修复IncompatibleClassChangeError》 在Java编程中,`java.lang.Class`是所有类的基石,它提供了访问类元数据、创建类实例以及执行类操作的关键方法。源码...

    java.lang研究

    `Class`类是Java反射机制的基础,它代表运行时的类和接口信息。`Object`类是所有Java类的根,它定义了所有对象共有的行为,如`equals()`、`hashCode()`和`toString()`方法。`System`类提供了系统级的服务,如标准...

    Android 出现:java.lang.NoClassDefFoundError...错误解决办法

    在Android开发过程中,有时会遇到一个常见的运行时异常——`java.lang.NoClassDefFoundError`。这个错误通常意味着在编译期间能够找到类的定义,但在运行时却无法加载该类。本文将深入探讨这个问题,特别是在Android...

    java.lang包

    Java语言的核心库之一就是`java...通过理解并熟练使用`java.lang`包中的类和接口,开发者能够更好地进行异常处理、数据类型转换、字符串操作、数学计算以及对类和对象的基本操作,从而编写出更加健壮和高效的Java程序。

    java_lang包详解.pdf

    《java_lang包详解》 Java语言的核心库之一就是java.lang包,它包含了Java程序中最基础、最...在编写Java程序时,无论何时何地,你都有可能需要用到java.lang包中的类和接口,因此深入学习和掌握这个包是至关重要的。

    org.apache.commons.lang包

    Apache Commons Lang是一个非常重要的Java库,它为Java标准类库提供了许多实用的工具类和扩展。这个资源包包含了丰富的功能,极大地增强了Java开发者的生产力。标题中的"org.apache.commons.lang包"指的是该库的主要...

    Mybatis单个参数的if判断报异常There is no getter for property named 'xxx' in 'class java.lang.Integer'的解决方案

    如果按照处理对象类型的参数方式直接在`<if>`中使用参数名,可能会遇到异常`There is no getter for property named 'xxx' in 'class java.lang.Integer'`。这是因为MyBatis在寻找getter方法时找不到对应的属性,...

    class.getMethods()

    在Java编程语言中,`Class.getMethods()`是一个非常重要的方法,它属于`java.lang.Class`类。这个方法用于获取指定类或接口的所有公共方法,包括继承自超类和实现的接口的方法。`getMethods()`返回一个`Method`对象...

    Java 异常java.lang.NoSuchFieldException解决方案

    在Java编程中,`java.lang.NoSuchFieldException`是运行时异常的一种,通常发生在尝试访问或操作一个类的字段,但该字段在指定的类或其任何超类中不存在时。这个异常表明在编译期间可能存在的字段在运行时无法找到,...

    java.lang.NullPointerException出现的几种原因及解决方案

    本文将详细介绍java.lang.NullPointerException出现的几种原因及解决方案,希望对大家的学习或工作具有一定的参考借鉴价值。 1. 字符串变量未初始化 在java中,如果未初始化字符串变量,就可能会抛出java.lang....

    org.apache.commons.lang jar下载

    2. **类和对象工具**: `ClassUtils` 和 `ObjectUtils` 类提供了一些通用的类和对象操作,例如类型转换、获取类名、比较对象的相等性等,这些方法简化了常见的编程任务。 3. **数组处理**: `ArrayUtils` 类包含了...

Global site tag (gtag.js) - Google Analytics