A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lishaos 中级黑马   /  2019-5-19 10:11  /  533 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

stream流方法
  • 获取流的方法
    • list.stream()
    • set.stream()
    • Stream.of()

  • 流的常用方法
    • 过滤:filter()
    • 截取指定参数个数数据:limit()
    • 截取指定参数个数数据:skip()
    • 流合并:Stream.concat(s1,s2)
    • 去重:distinct()
    • 排序:sorted()
    • 根据提供数据进行处理或转换的方法:map()  和 maptoInt()   多了sum()求和
    • 循环输出:foreach()
    • 元素的个数:count()


流收集
  • 流收集
    • listStream.collect(Collectors.toList());
    • setStream.collect(Collectors.toSet());
    • arrayStream.collect(Collectors.toMap(s -> s.split(",")[0], s -> Integer.parseInt(s.split(",")[1])));


反射概念
  • 概念:通过class对象动态的获取类内部结构(构造函数,方法,变量),对其进行调用的过程

获取类class对象的三种方式
  • 类名.class
  • 对象.getClass()
  • Class.forName("完整类路径")

获取构造方法
  • 获取共有构造方法: c.getConstructors()
  • 获取全部构造方法: c.getDeclaredConstructors()
  • 获取单个的共有构造方法: c.getConstructor(Class<?>... parameterTypes)
  • 获取单个全部的构造方法:c.getDeclaredConstructor(Class<?>... parameterTypes)
  • 获取到构造方法对应的对象后如何实例化:newInstance()
  • 可以调用私有构造:setAccessible(true);

获取字段
  • 获取所有公有属性:getFields()
  • 获取所有属性:getDeclaredFields()
  • 获取单个公有属性:getField(String fieldName)
  • 获取单个所有属性:getDeclaredField(String fieldName)
  • 为属性赋值:addressField.set(obj,"西安");
  • 读取属性的值:addressField.get(obj)

调用方法
  • 获取所有公有方法包括继承来的:getMethods()
  • 获取所有方法不包括继承来的:getDeclaredMethods()
  • 获取单个公有方法:getMethod("方法名")
  • 获取单个方法:getDeclaredMethod("方法名")
  • 方法调用:m.invoke(obj);

模块化编程
import com.test.MyInterface;
import com.test.MyInterfaceImpl1;
import com.test.MyInterfaceImpl2;

module MyOne {
    exports com.test;
    provides MyInterface with MyInterfaceImpl1, MyInterfaceImpl2;
}
import com.test.MyInterface;

module MyTow {
    requires MyOne;
    uses MyInterface;
}Junit测试分类
  • 黑盒测试:傻瓜式测试。只关心结果!
  • 白盒测试:更有技术含量。除了关心结果,还要关心程序的安全性和健壮性

Junit基本使用
  • 在方法声明上,加上@Test注解

单元测试需要使用的注解
  • @Before    执行功能方法之前被执行
  • @Test         执行功能方法
  • @After       执行功能方法之后被执行

注解概念
  • 注解就是用于说明程序的。参与程序的运行
  • JDK1.5版本之后的新特性

作用
  • 编写文档(API帮助文档)
  • 编译检查(@Override   @FunctionalInterface)
  • 代码分析(配合反射使用)【重点

常用的注解
  • @Override     用于检测方法是否是重写的
  • @Deprecated    用于标识某个方法是否已过时
  • @SuppressWarnings    用于压制警告
  • @FunctionalInterface    用于检测接口是否是一个函数式接口
  • @Before      在功能方法之前被执行
  • @Test           执行功能方法
  • @After         在功能方法之后被执行

自定义注解
  • 格式


public @interface 注解名称{
   
}
  • 本质
    • 注解本质就是一个接口!所有的注解都实现了Annotation接口

  • 注解中的属性
    • 属性(方法)的返回值数据类型
      • 基本数据类型四类八种
      • String
      • 枚举
      • 注解
      • 以上数据类型的数组

    • 注意事项
      • 可以使用default给属性设置一个默认初始化值
      • 如果属性名叫value,而且只有一个属性时,那么赋值时,属性名可以省略
      • 数组进行赋值时,需要使用{}。如果数组中只有一个值,{}可以省略


  • 元注解
    • @Target(ElementType)
      • TYPE   用于类上面
      • METHOD  用于方法上面
      • FIELD     用于变量上面

    • @Retention(RetentionPolicy)
      • SOURCE   源代码阶段
      • CLASS      字节码阶段
      • RUNTIME  运行时阶段

    • @Documented     可以被抽取到帮助文档中
    • @Inherited            可以被子类继承


解析注解

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马