苍穹外卖Day3

getDeclaredMethod和getMethod的区别

getDeclaredMethod 和 getMethod 是 Java 反射 API 中用于获取类中方法信息的两个重要方法,但它们在功能和行为上有一些区别。

1.获取方法范围:

  • getDeclaredMethod:此方法用于获取类本身声明的所有方法,包括公共的、私有的、受保护的以及默认(包)访问级别的方法。但它不包括从父类或接口中继承的方法。
  • getMethod:此方法用于获取类的所有公共方法,包括类本身声明的公共方法以及从父类或接口中继承的公共方法。

2.异常处理:

  • 如果使用 getDeclaredMethod 尝试获取一个不存在的方法,它会抛出 NoSuchMethodException 异常。
  • 如果使用 getMethod 尝试获取一个不存在的方法(无论是类本身声明的还是继承的),它同样会抛出 NoSuchMethodException 异常。

3.参数类型:

  • 两个方法都需要提供方法名和参数类型的 Class 对象作为参数。这是为了确定要获取哪个具体的方法,因为在 Java 中方法名可以重载(即,可以有多个同名但参数不同的方法)。
  • 如果提供的参数类型与类中的任何方法都不匹配,两个方法都会抛出 NoSuchMethodException 异常。

4.使用场景:

  • 如果你只需要获取类本身声明的所有方法,而不关心它们是否是公共的,或者你是否需要访问从父类或接口中继承的方法,那么应该使用 getDeclaredMethod。
  • 如果你需要获取类的所有公共方法,包括从父类或接口中继承的方法,那么应该使用 getMethod。

方法签名对象和方法之间是什么关系

方法签名(Method Signature)是方法的声明部分,它主要包括方法的名称、参数列表和返回类型。这个签名是用来标识和区分不同方法的关键信息,决定了方法的唯一性。

方法签名与方法之间的关系可以理解为:

  • 方法签名是方法的标识符:它包含了足够的信息来唯一确定一个方法。在同一个类中,不能有两个具有相同签名的方法,即使它们的返回类型不同也不行。
  • 方法签名决定了方法的外部行为和属性:通过方法签名,我们可以知道这个方法接受什么样的参数,以及它返回什么样的值。这对于理解和使用该方法至关重要。
  • 方法签名与方法的重载(Overloading)有关:方法的重载允许在同一个类中定义多个方法,它们的方法名相同,但参数列表不同。这时,方法签名中的参数列表就是区分这些重载方法的关键。

JoinPoint joinPoint是什么

oinPoint是面向切面编程(AOP)中的一个重要概念,表示在程序执行过程中的特定位置或事件 。它代表了应用程序执行过程中可以被拦截的特定点,如方法的调用、方法的执行前后、异常抛出等。通过拦截这些JoinPoint,AOP框架可以插入额外的逻辑,实现横切关注点的功能。

在Spring AOP中,JoinPoint通常与切面(Aspect)一起使用。切面是一种横切关注点,它包含了要在JoinPoint上执行的额外逻辑。通过在JoinPoint上定义切面,可以在程序执行过程中动态地插入切面逻辑,实现横切关注点的模块化和复用。

在Spring的AOP实现中,JoinPoint通常通过JoinPoint接口来访问。这个接口提供了许多有用的方法,如获取目标对象、方法签名、参数等信息。在切面方法中,可以通过JoinPoint参数来获取这些信息,并根据需要执行额外的逻辑。

需要注意的是,JoinPoint本身并不执行任何操作,它只是提供了一个接口来访问与当前JoinPoint相关的信息。实际的切面逻辑需要在切面方法中实现。

实现Serializable接口有什么意义

在Java中,Serializable接口是一个标记接口,它没有定义任何方法。当一个类实现了Serializable接口时,它表示该类的对象可以被写入到流(例如文件或网络连接),并且之后可以从流中恢复出来,这个过程被称为序列化(serialization)和反序列化(deserialization)。

相关推荐
2401_857439691 小时前
Spring Boot新闻推荐系统:用户体验优化
spring boot·后端·ux
hong_zc1 小时前
算法【Java】—— 二叉树的深搜
java·算法
进击的女IT2 小时前
SpringBoot上传图片实现本地存储以及实现直接上传阿里云OSS
java·spring boot·后端
Miqiuha2 小时前
lock_guard和unique_lock学习总结
java·数据库·学习
杨半仙儿还未成仙儿3 小时前
Spring框架:Spring Core、Spring AOP、Spring MVC、Spring Boot、Spring Cloud等组件的基本原理及使用
spring boot·spring·mvc
一 乐3 小时前
学籍管理平台|在线学籍管理平台系统|基于Springboot+VUE的在线学籍管理平台系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习
数云界3 小时前
如何在 DAX 中计算多个周期的移动平均线
java·服务器·前端
阑梦清川3 小时前
Java继承、final/protected说明、super/this辨析
java·开发语言
快乐就好ya5 小时前
Java多线程
java·开发语言
IT学长编程5 小时前
计算机毕业设计 二手图书交易系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·二手图书交易系统