小言_互联网的博客

JAVA基础知识整理----反射、代理、接口或lambda表达式

216人阅读  评论(0)

反射;代理;接口 ;lambda表达式

反射

Class类 管理和表示类的信息

获取类的信息

  • 类名.class

  • 对象.getclass();

  • class.forName(“java.lang.String”);包名加类名 常用

  • 前两种都会固定到程序中,第三种只需要传入任意的字符串

创建类的的对象

  • 获取到的类信息.newInstance();

  • 上面的newInstance调用的是一个空的构造函数 如果重载构造函数注意参数

Class三种的方法

  • 都有getName方法获取项目的名称

  • Filed

    • getType方法
  • Method

    • 返回类型参数
    • 返回修饰符
  • Constructor

    • 返回类型参数
    • 返回修饰符

通过反射设置域中的值

getDeclaredFileds()获取所有的域

getDeclaredMethods()获取所有的方法

强制读写某个属性值

setAccessible(true);设置属性可以访问,private 性质的

框架中的使用

spring项目

spring ioc

  • 由反射实现的

sevlert项目

  • 没有new去创建对象,都是通过反射创建的
  • 启动流程
    • tomcat 只能执行sevlert程序
    • 加入最顶部的标签注解 原理是一样
    • 启动之后扫描所有的文件 有注解则创建对象
    • 会定位到对应的
    • 请求打入 分发不同的sevlert 根据地址查看对应的方法
    • web.xml配置项目 根据配置的文件去加载对应的sevlert
      • 使用select name 别名
      • class 对应的类

接口(区别和相同点)

抽象类

接口

  • 相同点
    • 都不能被实例化
  • 不同点
    • 抽象类可以有构造方法,接口不能有
    • 抽象类可有普通成员变量,接口没有普通成员变量
    • 接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final
    • 抽象类中可以包含静态方法,接口中不能包含静态方法
    • 一个类可以实现多个接口,但只能继承一个抽象类。
    • 接口可以被多重实现,抽象类只能被单一继承
    • 如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法
    • 接口定义的关键字interface;抽象类定义的关键字abstract
    • 抽象类继承的关键字extends,接口的实现关键字implements
    • 抽象类可以提供成员方法的实现细节,可以用public 、protected、default这些修饰符;接口只能是public abstract方法

二维数组排序

  • Comparator 方法 设置排序规则可以自动排序

  • 使用方法:

    
    

对象克隆

  • 深拷贝

    • 完全相同
    • 完全独立的两份
    • 重新构建一个新的对象
  • 浅拷贝

    • 指向同一个位置

Lambda表达式(总结pdf中的条目,从匿名内部类和接口学习)

内部类

  • 在类内声明

  • 通过外围类加.内部类名 创建 new waiwei().new neibu();

  • 可以读取外围类的私有属性

  • 方法内的内部类

    • 只能作用在方法内部
    • 方法内部的变量。传入参数必须是最终变量
  • 匿名内部类

    new Thead(new Runnable(){
    
    })
    
  • 静态内部类属于所有的对象所有

    • 声明的所有的静态域都是final的

代理(及在原有的功能上添加功能,不修改原有代码)

静态代理

  • 不足:所有的静态代理都需要手动去写。如果接口增加方法 实现类和代理类都需要添加新的方法
  • 代码实现

动态代理

  • 代码实现
  • 不足:需要实现接口方法

应用代理的地方

  • spring aop

    • jdk的动态代理
      • 必须实现接口
    • cglib的动态代理
      • 不用实现接口
  • mybatis

    • dao层和xml 对接 xml中sql语句是自己写的 其他都是直接提供的
  • RPC/double


转载:https://blog.csdn.net/qq_43248585/article/details/115677581
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场