栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

反射,注解,XML

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

反射,注解,XML

目录

一、反射

Ⅰ、获取Class对象的三种方式:

用来创建对象">2、获取构造方法(构造器)-->用来创建对象

3、获取成员方法

4、获取类名

二、注解

Ⅰ、常用注解:

1.限定父类重写方法:@Override

2.标示已过时:@Deprecated  //带破 kei 忒的

3.抑制编译器警告:@SuppressWarnings //舍普ruai死  wao宁死

Ⅱ、自定义注解:

格式

属性

使用注解需给属性赋值

Ⅲ、元注解:用于描述注解的注解

常见元注解

解析注解:

三、XML

XML语言的作用:

XML文件的特点:

XML的语法规则:

常用xml转义字符

XML语法:

DTD文件:

XSD文件:

解析XML文件4种方法:

  

4种方式优缺点:

使用dom4j解析XML文档:

遍历子节点的操作,方法都在Element类中

解析属性。方法在Attribute类中   //额崔biu 的

添加属性。方法在Element类中

创建新的节点添加注释

将创建好的新内容(节点,节点里的内容,注释,属性)写入文件中

通过Xpath操作xml文件

获得该节点下指定子节点,Element下的方法


一、反射

框架概念:框架就是一些类和接口的集合,通过这些类和接口协调来完成一系列的程序实现。相当于半成品软件,可以在框架的基础上进行软件开发,简化代码。

反射概念:框架设计的灵魂。将类的各个部分封装为其他对象,这就是反射机制.    

反射好处:1.可以在程序运行的过程中,操作这些对象

                  2.可以解耦,提高程序的可扩展性.

Ⅰ、获取Class对象的三种方式:

1、Class.forName(“全类名(包名.类名)”):将字节码的文件加载进内存,返回Class对象.

static Class

forName(String className)           返回与带有给定字符串名的类或接口相关联的 Class 对象。

2、类名.class:通过类名的属性class获取.多用于参数列表

3、对象.getClass():getClass()方法在Object类中定义.

Class

getClass​()

返回此 Object的运行时类。

Ⅱ、Class类访问类中成员:

1、获取成员变量:

  

   Field[]  getFields()  //非欧的     //获取public修饰的所有成员变量

   Field    getField(String name)    //获取public修饰的指定的成员变量

   Field[]  getDeclaredFields()  //得可来额的     //获取所有权限修饰的成员变量

   Field    getDeclaredField(String name)     //获取所有权限修饰的指定的成员变量

Field类中的方法

 Object

get(Object obj) 

 获取变量的值,obj为对象名

 void

set(Object obj, Object value) 

为变量设置新值,obj为对象名,value为新值

void

setAccessible(boolean) //额可晒死包     当访问非public修饰的成员变量,需要先忽略权限修饰符的安全检查,参数写入true即可.

2、获取构造方法(构造器)-->用来创建对象
   Constructor[]  getConstructors() //啃食抓科特(日)

   Constructor getConstructor(类...parameterTypes)

   //传入参数为类中成员变量类型,格式为:变量类型.class

   Constructor[]  getDeclaredConstructors()

   Constructor getDeclaredConstructor(类...parameterTypes)

注意事项:①getConstructors方法获取的所有构造器的顺序是不一定的!!!

Constructor类中的方法

Object

newInstance​(Object... initargs)    用来创建对象,传入成员变量的值

   

3、获取成员方法
  Method[] getMethods()

   //获取所有的public修饰的方法,同时会包含继承的父类的等等

  Method getMethod(String name,类...parameterTypes)

  //参数name为方法名称。后边为参数的类型,格式为参数类型.class

  Method[] getDeclaredMethods()
 
  Method getDeclaredMethod(String name,类...parameterTypes)
Method中成员方法

Object

invoke(Object obj, Object... args) 

 执行类中方法,obj为对象名,args为传入参数值

String

getName() 

 以 String 形式返回此 Method 对象表示的方法名称。

boolean

isAnnotationPresent(注解名称.class)

判断该Method对象上面是否有注解

//哎呢忒神  颇深特

4、获取类名
String getName() //返回全类名

Class类中其他成员方法:

ClassLoader

getClassLoader​()

返回类的类加载器。

                          InputStream

getResourceAsStream​(String name)

//瑞烧死   //

查找具有给定名称的资源,主要用途是将资源包转换成

二、注解

Ⅰ、常用注解:

1.限定父类重写方法:@Override

当子类重写父类方法时,子类可以加上这个注解,检测子类确实重写了父类的方法,避免出现低级错误









2.标示已过时:@Deprecated  //带破 kei 忒的

这个注解用于表示某个程序元素类,方法等已过时,当其他程序使用已过时的类或方法时,编译器会给出警告









3.抑制编译器警告:@SuppressWarnings //舍普ruai死  wao宁死

被该注解修饰的元素以及该元素的所有子元素取消显示编译器警告,例如修饰一个类,那他的字段,方法都不显示警告@SuppressWarnings(“all”)

Ⅱ、自定义注解:

注解本质是一个接口,默认继承java.long.annotation.Annotation接口

格式

      元注解

      public @interface 注解名称{属性列表}

属性

注解里面的抽象方法

属性的返回值类型:基本类型、String、枚举、注解,还包括以上类型的数组。

使用注解需给属性赋值

赋值的两种方法:

 1、在使用注解时@Override(name=”sa”,age=9)

 2、在定义注解时跟在属性后面跟 default “张三”,就可以不赋值

 3、如果只有一个属性需要赋值,并且属性的名字叫value,则可以直接在使用注解的时候给值 

      @Override(19)               

             

各类型赋值方法:1、注解:属性名称=@注解名称

                             2、数组:属性名称={“abc”,“cde”};如果数组内容只有一个,则可以省略大括                                        号。

                             3、枚举:属性名称=枚举名称.里面的量

Ⅲ、元注解:用于描述注解的注解

常见元注解

1、@Target:描述注解能够作用的位置  //ta e 盖特

里面是一个value方法 ,返回值ElementType[]枚举数组

枚举里面的常量包括:

          TYPE:作用于类上  //tai 坡

          METHOD:作用于方法上

          FIELD;作用于成员变量上

2、@Retention:描述注解被保留的阶段 //瑞ten信

里面是一个value方法 ,返回值RetentionPolicy枚举类型

枚举里面包括的常量:               //泡了谁

        SOURCE:源代码阶段。//骚死 只在源代码级别保留,编译时就会被忽略

        CLASS:类对象阶段。编译时被保留,在class文件中存在,但JVM将会忽略

        RUNTIME:运行时阶段,一般都取这个值。这种类型的Annotations将被JVM保留,所以他们

                          能在运行时被JVM或其他使用反射机制的代码所读取和使用.

3、@documented:描述注解是否被抽取到api文档中

4、@Inherited:描述注解是否被子类继承

解析注解:

1、获取该类的Class对象     Class<类名> 对象名=类名.Class

2、使用Class中的方法获取注解对象

Annotation>

A

getAnnotation​(Class annotationClass)

参数为注解的Class对象,返回值为注解对象.

  使用此方法其实就是在内存中生成了该接口的实现类对象,并且按照注解重写了里面的抽象方法.

  3、调用注解中的抽象方法获取返回值.

注意事项:如果注解在方法上,获取该方法的Mathod对象,里面也有getAnnotation()方法.

三、XML

x(extensible)可扩展的    M(markup)标记/节点   L(language)语言   -->可扩展的标记语言.

XML语言的作用:

   1、存:特殊的文件,单级游戏里的等级和装备存到XML文件中

   2、传:网络上传递数据

   3、配置文件

XML文件的特点:
  1. 跨平台性
  2. 多语言都支持XML语言
  3. XML具有自我描述性:所有节点(元素)自定义

XML的语法规则:
  1. 要有根节点,只能有一个
  2. 节点要有开始和结束<节点名> .....内容
  3. XML文件对大小写敏感
  4. XML节点的属性值必须加引号(单双都可),<节点 whit  =”12”> ,属性的个数没有限制。

常用xml转义字符

        >;>            ⁢   <                 &   &

XML语法:

1、注释的结构:

2、XML中书写特殊字符的方   法:  变成普通字符串.

DTD文件:

  DTD:document Type Definition  文档类型定义

  DTD:帮助作者编写合法的代码。对节点有约束,XML使用时需要先引用头文件.

XSD文件:

  XSD:Schemas Definition Definition 结构定义

  XSD:时DTD的替代品,比DTD高端(可以定义数据类型),使用时也需要引用头文件.

解析XML文件4种方法:
  1. DOM解析

  2. SAX解析

  3. JDOM解析

  4. DOM4J解析

  5. 前两种是基础方法,于平台无关的解析方式,后两种是于java平台相关的解析方式.       

  

4种方式优缺点:
  1. dom解析原理,文档中所有的元素按照其出现的层次关系,在内存中构造出树形结构。优点是可以遍历和修改节点内容,缺点是容易内存溢出,解析速度慢。
  2. sax:相比dom速度快更有效,但是不能修改节点内容。
  3. jdom:仅适用于具体的类,而不用接口,不灵活。
  4. dom4j:jdom的一种智能分支,合并了许多超出基本xml文档的功能.

使用dom4j解析XML文档:

1、将dom4j解析包导入到项目中

    文件->项目结构->添加到库

2、将文件转成InputStream流

     该类.class.getResourceAsStream(String name)

3、创建SAXReader对象         //文件

4、①调用里面的read()方法获取document文档对象->document

     ②reader方法有多种重载,包括传入Flie对象和InputStream流

5、获得Element根节点对象element。使用 document.getRootElement();

6、用Element对象中其他方法进行XML的操作

遍历子节点的操作,方法都在Element类中

获取Element的对象,element获得的是根节点对象.

List  elements()   获得该节点下的所有子节点的对象

String  getName()      获得该节点的节点名

Object  getData()     获得该节点内部的值

解析属性。方法在Attribute类中   //额崔biu 的

获取Attribute属性对象  element.attribute(String str)//参数为属性名称,该方法有重载

String  getValue()   获取该属性对应的值

添加属性。方法在Element类中

void addAttribute(String str1,String str2)str1为属性名,str2为属性值

创建新的节点添加注释

在节点下创建新节点,方法还是Element类中

Element addElement(String str)  创建一个子节点,参数为创建节点的名字

void  SetText(String str)  向节点中添加值

void addConment(String str)   在该节点下写入注释

将创建好的新内容(节点,节点里的内容,注释,属性)写入文件中

XMLWriter xwl = new XMLWrite(OutputStream,OutputFormat);//路径,写入方式

        XMLWriter构造方法中参数详解

        OutputStream:为写入的文件地址

        OutputFormat = new OutputStream(“t”,true,”utf-8”);//控制写入的格式。在dom4j包种

        参数含义为:开头空格,换行重写,编码方式)

        xwl.write(document  doc) //将xml文档写入文件

        xwl.close()  //关闭

通过Xpath操作xml文件

xpath是一种在xml文件中快速查找信息的方式,可轻松查找节点,不需要使用层级遍历。使用之前需要先导包

获得该节点下指定子节点,Element下的方法

List selectNodes(String str)   //no 的

   作用                                                                    参数格式                   

获得对象节点下子节点对象集合                            节点名

获得节点下指定索引处子节点集合                        节点名[索引]                            //索引1开始

获得节点下子节点集合的末尾                               节点名[last()]

获得节点下子节点集合的倒数第二个                    节点名[last()-1]

获得节点下指定索引范围的子节点集合                节点名[position()>2]

获得该节点多层下子节点集合                              节点名/节点名

获得全部该节点集合,忽略层级和位置                   //节点名

获得节点下子节点,具有某个属性         节点名[@属性名称] 或者 节点名称[@属性名称 = “属性值”]

获得节点下子节点,使用节点内容筛选                  节点名称[节点名称>num]

例子:List list1 =element.selectNodes("Uncle[age >19]/name");

Node中的方法:

String getName()   //获得该节点名称

String getTest()     //获得该节点内的内容

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/531985.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号