java 命名空间 命名规则第1/2页_java

摘要                                                                                      
    Java的类装载器是Java动态性的核心,本文将向大家简要介绍Java的类装载器,及相关的parent delegation模型,命名空间,运行时包等概念,同时讨论一些在学习中容易混淆的问题。 

类装载器的功能及分类

    顾名思义,类装载器是用来把类(class)装载进JVM的。JVM规范定义了两种类型的类装载器:启动类装载器(bootstrap)和用户自定义装载器(user-defined class loader)。 

   bootstrap是JVM自带的类装载器,用来装载核心类库,如java.lang.*等。如java.lang.Object是由bootstrap装载的。 

   Java提供了抽象类ClassLoader,所有用户自定义类装载器都实例化自ClassLoader的子类。 System Class Loader是一个特殊的用户自定义类装载器,由JVM的实现者提供,在编程者不特别指定装载器的情况下默认装载用户类。系统类装载器可以通过ClassLoader.getSystemClassLoader() 方法得到。

例1,测试你所使用的JVM的ClassLoader

/*LoaderSample1.java*/public class LoaderSample1 {    public static void main(String[] args) {        Class c;        ClassLoader cl;
        cl = ClassLoader.getSystemClassLoader();        System.out.println(cl);
        while (cl != null) {            cl = cl.getParent();            System.out.println(cl);        }        try {            c = Class.forName("java.lang.Object");            cl = c.getClassLoader();            System.out.println("java.lang.Object's loader is " + cl);            c = Class.forName("LoaderSample1");            cl = c.getClassLoader();            System.out.println("LoaderSample1's loader is " + cl);        } catch (Exception e) {            e.printStackTrace();        }    }}
在我的机器上(Sun Java 1.5)的运行结果

C:\java>java LoaderSample1
sun.misc.Launcher$AppClassLoader@82ba41
sun.misc.Launcher$ExtClassLoader@923e30
null
java.lang.Object's loader is null
LoaderSample1's loader is sun.misc.Launcher$AppClassLoader@82ba41

第一行表示,系统类装载器实例化自类sun.misc.Launcher$AppClassLoader 

第二行表示,系统类装载器的parent实例化自类sun.misc.Launcher$ExtClassLoader 

第三行表示,系统类装载器parent的parent为bootstrap 

第四行表示,核心类java.lang.Object是由bootstrap装载的 

第五行表示,用户类LoaderSample1是由系统类装载器装载的 

parent delegation模型

   从1.2版本开始,Java引入了双亲委托模型,从而更好的保证Java平台的安全。在此模型下,当一个装载器被请求装载某个类时,它首先委托自己的parent去装载,若parent能装载,则返回这个类所对应的Class对象,若parent不能装载,则由parent的请求者去装载。

   如图1所示,loader2的parent为loader1,loader1的parent为system class loader。假设loader2被要求装载类MyClass,在parent delegation模型下,loader2首先请求loader1代为装载,loader1再请求系统类装载器去装载MyClass。若系统装载器能成功装载,则将MyClass所对应的Class对象的reference返回给loader1,loader1再将reference返回给loader2,从而成功将类MyClass装载进虚拟机。若系统类装载器不能装载MyClass,loader1会尝试装载MyClass,若loader1也不能成功装载,loader2会尝试装载。若所有的parent及loader2本身都不能装载,则装载失败。

   若有一个能成功装载,实际装载的类装载器被称为定义类装载器,所有能成功返回Class对象的装载器(包括定义类装载器)被称为初始类装载器。如图1所示,假设loader1实际装载了MyClass,则loader1为MyClass的定义类装载器,loader2和loader1为MyClass的初始类装载器。

当前1/2页 12下一页阅读全文

时间: 2024-08-02 15:13:19

java 命名空间 命名规则第1/2页_java的相关文章

流行的DIV+CSS的命名规则

SEO(搜索引擎优化)有很多工作要做,其中对代码的优化是一个很关键的步骤.为了更加符合SEO的规范,下面中部IT网将对目前流行的CSS+DIV的命名规则整理如下: 页头:header 登录条:loginBar 标志:logo 侧栏:sideBar 广告:banner 导航:nav 子导航:subNav 菜单:menu 子菜单:subMenu 搜索:search 滚动:scroll 页面主体:main 内容:content 标签页:tab 文章列表:list 提示信息:msg 小技巧:tips 栏

SEO优化之div+css命名规则

SEO(搜索引擎优化)有很多工作要做,其中对代码的优化是一个很关键的步骤.为了更加符合SEO的规范,下面中部IT网将对目前流行的CSS+DIV的命名规则整理如下:页头:header 登录条:loginBar 标志:logo 侧栏:sideBar 广告:banner 导航:nav 子导航:subNav 菜单:menu 子菜单:subMenu 搜索:search 滚动:scroll 页面主体:main 内容:content 标签页:tab 文章列表:list 提示信息:msg 小技巧:tips 栏目

java 变量的定义概念及命名规则

变量是指在程序执行过程中,其值可以改变的量.在内存的数据区中,会为变量分配存储空间来存放变量的值,这个内存空间的地址对应着变量名称,所以在程序中可以通过变量名称来区分和使用这些内存空间. 在Java语言中声明一个变量的语法如下: type 标识符 其中type表示数据类型,标识符则为变量名.例如: int i;                    //声明一个int型变量, 用来存储int型整数 float f;                  //声明一个float型变量, 用来存储flo

PHP变量命名规则详解

PHP变量命名规则 1.变量以美元符号$开头.如$name,$age. 2.美元符号$后面的第一个字符不可以是数字,只能是下划线_或者字母.如$1_1这样的变量是错误的. 3.除了下划线_外,变量不允许出现任何空格或标点符号.也就是说变量名只能包含:a-z.A-Z.0-9 以及下划线_. 4.PHP变量名是区分大小写的.如$name与$Name是两个不同的变量. PHP变量命名规则其余注意事项 1.当用两个或两个以上的单词命名变量时,可以将除第一个单词以外的所有单词的首字母大写.如$myName

第2章番外 Java的命名规范

Java开发者对Java的代码风格有自己的规范,良好的代码风格是非常重要的.下面来说下各种命名规范: 包命名(全小写,反写域名) Java引入包的机制很大程度是为了解决重名问题,这有点想C++的命名空间的作用. 包实际上提供了一种命名机制和可见性机制. 为了最大程度地防止重名,包名必须具有唯一性. Java包的名字都是由小写单词组成.但是由于Java面向对象编程的特性,每一名Java程序员都可以编写属于自己的Java包,为了保障每个Java包命名的唯一性,在最新的Java编程规范中,要求程序员在

web标准化设计环境中常用的CSS命名规则

常用的CSS命名规则 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:left right center 登录条:loginbar 标志:logo 广告:banner 页面主体:main 热点:hot 新闻:news 下载:download 子导航:subnav 菜单:menu 子菜单:submenu 搜索:search 友情链接:friendlink 页脚:f

web标准化设计:常用的CSS命名规则

css|web|web标准|设计 常用的CSS命名规则 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:left right center 登录条:loginbar 标志:logo 广告:banner 页面主体:main 热点:hot 新闻:news 下载:download 子导航:subnav 菜单:menu 子菜单:submenu 搜索:search 友情链

css命名规则:图片切图转网页的代码规范

文章简介:网页切图过程中div+css命名规则. 网上整理的比较好的css命名规则,为css代码的规范化做参考,增加代码的可读性. id的命名: (1)页面结构 容器: container 页头:header 内容:content/container 页面主体:main 页尾:footer 导航:nav 侧栏:sidebar 栏目:column 左右中:left right center 页面外围控制整体布局宽度:wrapper (2)导航 导航:nav 主导航:mainbav 子导航:subn

css选择器命名规则:差异及可能产生的问题

文章简介:W3C CSS2.1的 4.1.3 节中提到:标识符(包括选择器中的元素名,类和ID)只能包含字符[a- zA-Z0-9]和ISO 10646字符编码U+00A1及以上,再加连字号(-)和下划线(_):它们不能以 数字,或一个连字号后跟数字为开头.它们还可以包含转义字符加任何ISO 10646字符作为一个数 操作系统版本:Windows 7 浏览器版本:IE6,IE7,IE8,Firefox 3.6.2,Safari 4.0.4,Chrome 5.0.356.2 dev 受影响的浏览器