黑马程序员——高新技术——内省、注解、类加载器

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

内省(IntroSpector)

用于对javaBean操作。意思是检查、体检,即对程序内部进行检查。

JavaBean

1、JavaBean是一种特殊的Java类,主要用于传递数据信息,访问私有的字段,并且方法符合某种特殊的命名规则。

2、只要一个类中含有get、is或set打头的方法就可以当做JavaBean使用。

3、JavaBean的字段就是我们定义的一些成员变量。

4、JavaBean的属性是根据其中的setter和getter确定的。去掉set或get剩余部分就是属性名称。如果剩余部分第二个字母小写,则第一个也小写。

5、一个类被当做JavaBean使用时,JavaBean属性是根据方法 推断出来的,看不到内部的成员变量

作用:

如果在两个模板之间传递多个信息,可将这些信息封装到一个JavaBean中,这种JavaBean的实例对象通常称之为值对象(VO)。这些信息在类中用私有字段来存储。如果读取或设置这些字段的值,用方法访问。

好处:

1、在Java EE开发中,经常使用JavaBean。环境要求

2、JDK中提供了对JavaBean进行操作的API,这套API称为内省,若要通过getX的方式来访问私有x,可用内省这套API操作JavaBean要方便

例子:


要抽取方法可直接右键。

对JavaBean的复杂内省操作

1、IntroSpector类中有getBeanInfo(Class  cls)的方法,通过此方法获取BeanInfo实例。参数是对象字节码

2、BeanInfo类中有getPropertyDescriptors()的方法,可获取所有JavaBean类中的属性信息,返回是PropertyDescriptor[]

3、遍历的形式,获取属性信息。


BeanUtils工具包

BeanUtils是由阿帕奇提供便于开发的工具包。BeanUtils可以将8种基本数据类型进行自动转换,对于非基本数据类型,需要注册转换器Converter,就需要ConverUtils包

好处:

1、提供的set或get方法中,传入是字符串,返回也是字符串,这个工具包内部有自动将整数转换为字符串的操作。

2、支持属性的级联操作,即支持属性链。

3、可以和Map集合进行互换:可以将属性信息通过键值对的形式作为Map集合存储(通过static  java.util.Mapdescribe(java.lang.Object  bean)方法)。也能将Map集合转换为JavaBean中 的属性信息(通过static  void  populate(java.lang.Objectbdan,java.util.Map  properties)的方法)。

注解(annotation)

是JDK1.5的新特性,相当于一种标记,在程序中加了注解就等于为程序打上了标记。javac编译器、开发工具和其他程序可以用反射来了解你的类及各种元素上有无和何种标记,判断去干相应的事。一个注解就是一个类。

标记添加的位置:

包、类、字段、方法、方法的参数和局部变量上。

注解格式

@注解类名

如果很只有一个value名称的属性或其他属性缺省,则可@注解名(“属性值”);

有多个或不缺省或者需重新赋值。则@注解名(属性名=“属性值”,……);

三种最基本的注解

1、@SuppressWarning(“deprecation”):表示压制过时警告,就是对过时的不要警告,“deprecation”是警告信息

2、@Deprecated:表示告知调用者,该成员函数、字段等已经过时,不在使用。编译器会提示警告信息

3、@Override:表示下面的方法是在覆盖(父类方法),如果没覆盖,机会报错。


自定义注解和应用:

自定义格式

@interface名称{statement}

元注解:

在定义注解的时候加注解。有两个常用于元注解的注解:Retention和Target

Retention:用于说明注解保留到哪个阶段

枚举类Retention类的值:

RetentionPolicy.SOURSE:java源文件时期。

RetentionPolicy.CLASS:class文件时期(默认时期)。

RetentionPolicy.RUNTIME:运行时期。

注:

1.当在源程序上加了注解,javac和java源程序编译为Class文件时,会对注解的生命周期进行判断。然后处理

2.class文件中不是字节码,只有把class文件中的内容加载进内存,用类加载器加载处理后(进行完整的检查等处理),最终得到的二进制内容才是字节码。

Target:用于说明使用范围。默认在任何地方。

枚举值为:PZCKAGE包声明、ANNOTATION_TYPE注释类型声明、CONSIRUCTOR构造器声明、METHOD方法声明、PARAMETER参数声明、TYPE类、接口(包含注释类型)或枚举声明、LOCAL_VARIABLE局部变量声明。

注解的应用:

1.定义注解类:@interfaceA{}

2.应用了“注释I类”的类

3.对“应用注解类 的类”进行反射操作的类。

例子:


为注解添加基本属性

定义格式:

和接口一样:String color();

缺省格式:String  value() default “haah”;

应用:直接在注解的括号了里

1、当只有一个属性时,可以省略键

2、可以指定缺省,使用时可以再设置属性。

3、反射获得注解对象,可用对象调用属性对应的方法获取属性值

为注解增加其他属性:

返回值类型:

1.8种基本类型2.String类型3.Class类型4.枚举类型5.注解类型6.前面的数组

类加载器

定义:加载类的工具

作用:将Class文件中的内容变为字节码加载进内存。

默认类加载器:

1.JVM可安装多个类加载器,系统默认有三个主要的:BootStrap、ExtClassLoader、AppClassLoader

2.类加载器本身也是java类,但是BootStrap不是java类,所以最开始是由它加载的。它嵌套在JVM内核中是c++写得,不能通过java获取名字,返回值一定为空

类加载器采用树形结构组织,实例化类加载器对象需要为其指定一个父级类加载器对象或用系统安装的为父级类加载器


例子:


类加载的委托机制

每个类加载器只能加载特定位置和目录中的类,但它们可以委托其他的类加载器加载,这就是类的委托模式。

加载类的方式
1.首先当前的线程的类加载器去加载线程中的第一个类。

2.A引用了B,JVM将使用A的加载器加载B

3.可以直接用ClassLoader的LoadClass()加载

加载顺序:

最初发起的类加载器无法加载会委托上级加载器,逐级上找,直到Bootstrap,如果还未加载到,则会逐级返回直到最初的发起加载器,然后抛出ClassNotFoundException。停止查找,并不会调用子类加载器。

委托机制优点:

可以集中管理,不会产生多字节码重复的情况

例子


自定义类加载器

1.必须继承抽象类ClassLoader,并复写findClass(String  name),不能复写loadClass()。

2复写findClass(String  name)的原因:

由于在LoadClass()内是先委托给父级,当父级找不到后再调用findClass(String  name),也就是自定义的类加载器,所以只需要复写findClass(),就能实现用西定义的类加载器加载类的目的。一般自定义类加载器会把需要加载的类放指定目录中。java已有的加载器是不知道的,所以不会找。这样才会调用findClass(),用自定义的加载器加载指定的目录。这是模板方法设计模式,保留了loadClass()方法中的流程,只需要实现局部细节就行了。

编程步骤:

1.编写一个对文件内容进行简单加密的程序。

2.写一个自己的类加载器,可实现对加密的类进行加载和解密。

3.写一个程序,调用类加载器加载类。在源程序中不能用该类名定义引用变量,因为编译器无法识别这个类,程序中除了可使用ClassLoaderloadClass方法外,还可以使用设置线程的上下文类加载器或系统类加载器,然后再使用Class.forName

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 内容概要 《计算机试卷1》是一份综合性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适合准备计算机相关竞赛的学生,作为强化训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础。
### 内容概要 这份《计算机试卷1》包含多个部分,主要覆盖了计算机基础知识、操作系统应用、文字处理、电子表格、演示文稿制作、互联网应用以及计算机多媒体技术。试卷以单选题开始,涉及计算机历史、基本概念、硬件组成、软件系统、网络协议等。接着是操作应用部分,要求考生在给定的软件环境中完成一系列具体的计算机操作任务。 ### 适用人群 本试卷适用于计算机科学与技术、信息技术相关专业的学生,以及准备计算机水平考试或职业资格认证的人士。它适合那些希望检验和提升自己计算机操作能力的学习者,也适用于教育工作者作为教学评估工具。 ### 使用场景及目标 1. **学习评估**:作为教育机构的课程评估工具,帮助教师了解学生对计算机基础知识的掌握程度。 2. **自学检验**:供个人自学者检验自己的计算机操作技能和理论知识,为进一步学习提供方向。 3. **职业发展**:为职场人士提供计算机技能的自我提升途径,增强其在信息时代的竞争力。 4. **考试准备**:为准备计算机相关考试的考生提供实战演练的机会,加强考试自信。 5. **教学资源**:教师可以将其作为教学资源,设计课程和实验,提高教学效果。 试卷的目标是通过理论知识的测试和实践技能的操作,全面提升考生的计算机应用能力。考生应掌握从基础的计算机组成原理到复杂的数据处理、演示文稿制作、网络应用以及多媒体技术处理等多方面技能。通过本试卷的学习与练习,考生将能够更加熟练地使用计算机解决实际问题,为未来的学术或职业生涯打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值