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();
分享到:
相关推荐
Jmockdta是一款实现模拟JAVA类型或对象的实例化并随机初始化对象的数据的工具框架。单元测试的利器。 The plug-in of Jmockdata what through random algorithm mock java data. Jmockdata插件通过随机算法模拟...
33.java.lang.OutOfMemoryError 内存不足错误。当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。 34.java.lang.StackOverflowError 堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该...
今天小编就为大家分享一篇关于Mybatis单个参数的if判断报异常There is no getter for property named 'xxx' in 'class java.lang.Integer'的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,...
java 反射实战demo,Java的反射(reflection)机制是指在程序的运行...我理解的Java反射的原理就是获取Class对象然后使用java.lang.reflect里提供的方法操作Class对象,Class与java.lang.reflect构成了java的反射技术。
if(typeName.equals("java.lang.String")) { field.set(obj, value); }else if(typeName.equals("int")) { field.setInt(obj, Integer.parseInt(value)); }else if(typeName.equals("float"))...
ClassUtils – 用于对Java类的操作,不使用反射; ObjectUtils – 用于操作Java对象,提供null安全的访问和其他一些功能; RandomStringUtils – 用于生成随机的字符串; SerializationUtils – 用于处理对象序列化...
类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的 ...
3.2.4 使用反射机制的步骤 导入Jjava.lang.relfect 包需 遵循以下3三个步骤: 第一步是获得你想操作的类的 java.lang.Class 对象; 第二步是调用诸如 getDeclaredMethods 的方法; 第三步使用 反射API 来...
JAVA面试选择题 ...A.java.sql B.java.awt C.java.lang D.java.swing 答案:A 5.下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>
at java.lang.Thread.run(Thread.java:619) 相关jar包下载地址: Ehcache 对象、数据缓存:...
1. Class 类是由Java编译器自动生成的,它伴随每个类。 2.任何一个Java程序都默认引入一个包,这个包的名字是 java.lang 。 3.在Java语言中,有一个类是所有类或接口的父类,这个类的名称是 java.lang.Object 。 ...
〔1〕Speak.java 〔2〕生成两个字节码文件,这些字节码文件的名字Speak.class 和 Xiti8.class 〔3〕java Xiti8 〔4〕执行java Speak的错误提示 Exception in thread "main" java.lang.NoSuchMethodError: main 执行...
而剖析一个类或用反射解决具体的问题就是使用相关应用程序接口(1)`java.lang.Class`(2)`java.lang.reflect`,所以,Class对象是反射的根源。 IOC和DI是Spring里面最核心的东西,,资源中会写出这两个模块。资源内容...
java.lang.Class:是反射的源头 我们创建一个类,通过编译,生成对应的.calss文件,之后使用java.exe加载(jvm的类加载器)此.class文件,此.class文件加载到内存以后,就是一个运行时类,存在缓存区,那么这个运行时类...
类加载是指将类的class文件读入内存,并为之创建一个Java.lang.Class对象,也是说当程序中使用任何类时,系统都会为之建立一个java.lang.Class对象。 类加载器负责加载所有类,系统为所有被载入内存中的类生成一...
D 8.(1)Speak.java (2)生成两个字节码文件,这些字节码文件的名字Speak.class 和 Xiti8.class (3)java Xiti8 (4)执行java Speak的错误提示 Exception in thread "main" java.lang.NoSuchMethodError: main...
(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。 (3) 调用对象的clone()方法。 (4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 ...
2023年5月29日 4.1 包 包是由.class文件组成的一个集合 第2页/共41页 java期末复习第讲面向对象程序设计全文共41页,当前为第2页。 2023年5月29日 4.1.1 定义包 构建包语句的语法是: package pkg1[.pkg2[.pkg3…]]...
java.lang.reflect.Method method = clazz.getMethod("close", null); method.invoke(resource, null); } catch (Exception e) { // e.printStackTrace(); } } /** * 执行 SELECT 等 SQL 语句并返回结果集. ...
.`java.lang.Class类 ==Class代表类型的类== 如果一个对象代表一个类型,则该对象的类型的是Class ... 任何类型加载到JVM内存后对应的都是一个java.lang.Class对象 T 用于指定对应的实际类型名