苍穹外卖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)。

相关推荐
爱吃烤鸡翅的酸菜鱼1 分钟前
Java算法OJ(8)随机选择算法
java·数据结构·算法·排序算法
码蜂窝编程官方5 分钟前
【含开题报告+文档+PPT+源码】基于SpringBoot+Vue的虎鲸旅游攻略网的设计与实现
java·vue.js·spring boot·后端·spring·旅游
Viktor_Ye21 分钟前
高效集成易快报与金蝶应付单的方案
java·前端·数据库
hummhumm23 分钟前
第 25 章 - Golang 项目结构
java·开发语言·前端·后端·python·elasticsearch·golang
一二小选手27 分钟前
【Maven】IDEA创建Maven项目 Maven配置
java·maven
J老熊33 分钟前
JavaFX:简介、使用场景、常见问题及对比其他框架分析
java·开发语言·后端·面试·系统架构·软件工程
猿java38 分钟前
什么是 Hystrix?它的工作原理是什么?
java·微服务·面试
AuroraI'ncoding39 分钟前
时间请求参数、响应
java·后端·spring
所待.3831 小时前
JavaEE之线程初阶(上)
java·java-ee
Winston Wood1 小时前
Java线程池详解
java·线程池·多线程·性能