JUnit单元测试框架
@Test注解
public class A { @Test public void a(){ ..... } }
注解
初始化资源
释放资源
是指对于任何一个Clss类,在运行是都可以直接得到这个类的全部成分
Class c = A.class;
获得类对象
Class类中的静态方法:
main(){ Class c =Class.forName("com.hjz.entity.Student"); Class c =Student.class; Student s =new Student(); Class c = s.getClass(); }
获得构造器对象:
1.获得Class类对象
2.获得构造器对象
main(){ Class c =Student.class; Constructor[] cs = c.getConstructors(); Constructor[] cs = c.getDeclredConstructors(String.class,int.class);//有一个构造方法是啥用啥 }
创建对象:
main(){ Class c =Student.class; Constructor cs = c.getDeclredConstructors();//有一个构造方法是啥用啥 //反射会破坏封装性 cs.setAccesible(true);//是私有的 Student s = (Student)cs.new newInstance(); }
获得成员变量对象:
1.获得Class类对象
2.获得成员变量对象
方法:
main(){ Field agef =c.getDeclredFiled("age"); agef.setAccessible(true); Student s =new Student(); agef.set(s.18); int age = (int) agef.get(s); }
获得方法对象
....和之前的一样
反射的作用
ArrayList<Integer> list =new ArrayList<>();
实际跑起来都是Arraylist的类型了,不用管Integer了
1.定义一个方法可以接受任意的对象
2.每次收到一个对象后,解析这个对象的全部成员变量
3.这个对象是任意的
4.遍历这个成员变量,提取成员变量的具体的值
5.把名称和值放到成员变量对应的文件里面
JDK5 引入的标注
自定义注解
public @interface 注解名称{ public属性名称 属性名()default 默认值; }
例子:
public @interface MyBook{ String name(); String[] authors(); double price(); }
public class a{ @MyBook(name="java",autors={"黑马","我的"},price=200) public void ss(){ } }
只有一个value属性可以写可以不写
元注解
注解上的注解
@Target:约束自定义注解只能在哪使用
发现ElementType是个枚举。属性作用如下:
TYPE:接口、类、枚举
FIELD:字段、枚举的常量
METHOD:方法
PARAMETER:方法参数
CONSTRUCTOR:构造函数
LOCAL_VARIABLE:局部变量
ANNOTATION_TYPE:注解
PACKAGE:包
@Retention:申明注解的生命周期
按生命周期来划分可分为3类:
1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
@Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface MyBook{ String name(); String[] authors(); double price(); }
注解解析
代理为对象的行为实现一些辅助操作:
有时间看吧
xml解析---xpath解析技术
可扩展标记语言
数据表示格式
<?xml version="1.0" encoding="utf-8"> <--注释有且仅有一个-->
文档约束
解析数据技术:Dom4J框架底层技术
数据检索技术XPath
完结了我草终于2022.05.07