单元测试JUnit
单元测试的目的是针对方法进行测试,
JUnit的两个要点:①必须是公开的,无参数,无返回值的方法 ②测试方法必须使用@Test注解标记- public class JUnitTest {
- @Test
- public void Testusername() {
- way way = new way();
- String rs = way.username("123");
- //JUnit提供的断言
- Assertions.assertEquals("登陆成功",rs);
- }
- }
- class way {
- public String username(String un) {
- if(un.equals("123")) {
- return "登陆成功";
- }else
- return "登陆失败";
- }
- }
复制代码 反射
反射概述
反射是在运行时获取类的字节码文件对象,然后可以解析类中的全部成分。
反射的关键:得到编译以后的class文件对象。
获取Class对象的方法说明Class c1 = Class.forName(包名+类名)Class类中的一个静态方法Class c2 = 类名.class直接用类名获得,最方便Class c3 = 对象.getClass()实例化后用对象获得利用反射获取构造器对象

**反射的构造器可以用于创建对象 **- public class Reflect {
- public static void main(String[] args) throws Exception {
- //1.获取Class对象
- Class c1 = Student.class;
- //2.获取构造器对象
- Constructor student = c1.getDeclaredConstructor();
- //3.利用构造器对象来实例化对象
- Student stu = (Student) student.newInstance();
- //演示私有构造器如何获取
- Class c2 = Student.class;
- //1.有参构造器声明类型
- Constructor student2 = c2.getDeclaredConstructor(String.class,int.class);
- //2.破坏构造器私有性
- student2.setAccessible(true);
- student2.newInstance("jack",18);
- }
- }
复制代码 利用反射获取成员变量对象
 - public class Reflect {
- public static void main(String[] args) throws Exception {
- //1.获取Class对象
- Class c1 = Student.class;
- //2.获取Field对象
- Field field = c1.getDeclaredField("age");
- field.setAccessible(true);
- //3.给成员变量赋值
- Student student = new Student();
- field.set(student,18);
- //4.获取成员变量
- int result = (int) field.get(student);
- System.out.println(result);
- }
复制代码 利用反射获取方法
 - public class Reflect {
- public static void main(String[] args) throws Exception {
- //1.获取Class对象
- Class c1 = Student.class;
- //2.获取Method对象
- Method name = c1.getDeclaredMethod("setName", String.class);
- //3.Method.invoke(对象)来调用方法
- Student student = new Student();
- name.invoke(student,"Jack");
- }
- }
复制代码 反射作用:绕过编译为集合添加数据
说明:①编译成Class文件进入运行阶段后,泛型会自动擦除
②反射是作用在运行时的技术,此时已经不存在泛型了- public class Reflect {
- public static void main(String[] args) throws Exception {
- ArrayList<Integer> list = new ArrayList<>();
- list.add(1);
- list.add(2);
- //无法加入String类型的变量
- //list.add("Jack");
- //使用放射来强行加入String(运行时)
- Class d = ArrayList.class;
- Method add = d.getDeclaredMethod("add", Object.class);
- add.invoke(list,"Jack");
- for (Object integer : list) {
- System.out.println(integer);
- }
- }
- }
- //运行结果:1 2 Jack
复制代码 反射作用:通用框架的底层原理
说明:①可以在运行时得到一个类的全部成分
②做Java高级框架
③可以针对不同的对象,获取他们的信息
注解
对Java中类、方法、成员变量做标记,然后进行特殊处理
自定义注解

元注解
注解注解的注解(放在注解定义上方)
常见的元注解有两个:
注解说明@Target约束自定义注解只能在哪些地方使用@Retention申明注解的生命周期
注解解析
判断是否存在注解,存在注解就解析出内容
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |