GetClassLoader和GetCallerClass的示例分享

戚薇 Java经验 发布时间:2023-06-27 09:01:30 阅读数:12416 1
下文笔者讲述GetClassLoader和GetCallerClass的用法简介说明,如下所示

GetClassLoader的功能说明

GetClassLoader是JAVA中获取类加载器(ClassLoader)的方法

JAVA中有以下几种ClassLoader. 
  1.Bootstrap ClassLoader - GetClassLoader的返回值为Null,是JVM的C++源码, Ext ClassLoader 的Parent
     主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作
  2.System ClassLoader -  GetClassLoader返回值为SystemClassLoader
      主要负责java -classpath/-Djava.class.path所指的目录下的类与jar包装入工作
  3.Ext ClassLoader  - 是AppClassLoader 的Parent 返回Ext ClassLoader  
      主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作
  4.App ClassLoader - 返回AppClassLoader
       主要负责加载用户类 
  5.Customer Class Loader  - 一般都继承App ClassLoader 
      用户自定义

GetCallerClass简介

GetCallerClass是Sun.Reflector包下Reflection类的方法 
  定义为GetCallerClass(int level)
 	0.返回 Reflection类
 	1.返回调用GetCallerClass的类
	   如  Class Test{void test(){Class cs = Reflection.GetCallerClass(1)}}, 返回Test.
 	2.返回再上层的类
	   如 Class Main{new Test().test()}, GetCallerClass(2) 则返回Main. 
 	3. 4. ....层层上传

GetClassLoader和GetCallerClass的使用示例

两个函数结合可以使用加载安全
void security()
{
      Class cs = Reflection.GetCallerClass(2);     
      if(cs.GetClassLoader()!= null)
           throw new SecurityException("Only java core can calll this function")
}
 
Reflection.getCallerClass()取得调用类,此方法是native
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202306/16878277146909.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者