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

相关推荐
侠客行03174 小时前
Mybatis连接池实现及池化模式
java·mybatis·源码阅读
蛇皮划水怪4 小时前
深入浅出LangChain4J
java·langchain·llm
老毛肚6 小时前
MyBatis体系结构与工作原理 上篇
java·mybatis
风流倜傥唐伯虎6 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
Yvonne爱编码6 小时前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚6 小时前
JAVA进阶之路——无奖问答挑战1
java·开发语言
你这个代码我看不懂7 小时前
@ConditionalOnProperty不直接使用松绑定规则
java·开发语言
fuquxiaoguang7 小时前
深入浅出:使用MDC构建SpringBoot全链路请求追踪系统
java·spring boot·后端·调用链分析
琹箐7 小时前
最大堆和最小堆 实现思路
java·开发语言·算法
__WanG7 小时前
JavaTuples 库分析
java