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

相关推荐
chxii几秒前
6.2字节流
java·开发语言
不务专业的程序员--阿飞10 分钟前
【SQL 如何解锁递归】
java·数据库·sql
嘵奇16 分钟前
Spring Boot拦截器详解:原理、实现与应用场景
java·spring boot·后端
八股文领域大手子17 分钟前
Java死锁排查:线上救火实战指南
java·开发语言·面试
jackson凌23 分钟前
【Java学习笔记】finalize方法
java·笔记·学习
fanTuanye26 分钟前
redis 缓存穿透,缓存击穿,缓存雪崩
java·redis·缓存
神秘的t44 分钟前
Spring Web MVC————入门(2)
java·spring·mvc
开开心心就好1 小时前
高效全能PDF工具,支持OCR识别
java·前端·python·pdf·ocr·maven·jetty
冷心笑看丽美人1 小时前
Spring MVC数据绑定和响应 你了解多少?
java·spring·mvc
XQ丶YTY1 小时前
大二java第一面小厂(挂)
java·开发语言·笔记·学习·面试