Skip to content

Commit 9e01fb3

Browse files
committed
Update Java Notes
1 parent ea96275 commit 9e01fb3

File tree

3 files changed

+133
-1118
lines changed

3 files changed

+133
-1118
lines changed

Java.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8533,14 +8533,15 @@ public class AnnotationDemo01{
85338533
* AnnotatedElement:该接口定义了与注解解析相关的方法
85348534
* Class、Method、Field、Constructor 类成分:实现 AnnotatedElement 接口,拥有解析注解的能力
85358535

8536-
API :
8536+
Class 类 API :
85378537

8538-
* `Annotation[] getDeclaredAnnotations()` : 获得当前对象上使用的所有注解,返回注解数组
8539-
* `T getDeclaredAnnotation(Class<T> annotationClass)` : 根据注解类型获得对应注解对象
8540-
* `T getAnnotation(Class<T> annotationClass)` : 根据注解类型获得对应注解对象
8541-
* `boolean isAnnotationPresent(Class<Annotation> class)` : 判断对象是否使用了指定的注解
8538+
* `Annotation[] getDeclaredAnnotations()`:获得当前对象上使用的所有注解,返回注解数组
8539+
* `T getDeclaredAnnotation(Class<T> annotationClass)`:根据注解类型获得对应注解对象
8540+
* `T getAnnotation(Class<T> annotationClass)`:根据注解类型获得对应注解对象
8541+
* `boolean isAnnotationPresent(Class<Annotation> class)`:判断对象是否使用了指定的注解
8542+
* `boolean isAnnotation()`:此 Class 对象是否表示注释类型
85428543

8543-
注解原理:注解本质是一个继承了`Annotation` 的特殊接口,其具体实现类是 Java 运行时生成的**动态代理类**,通过反射获取注解时,返回的是 Java 运行时生成的动态代理对象 `$Proxy1`,通过代理对象调用自定义注解(接口)的方法,会最终调用 `AnnotationInvocationHandler` 的 `invoke` 方法,该方法会从 `memberValues` 这个Map 中找出对应的值,而 `memberValues` 的来源是 Java 常量池
8544+
注解原理:注解本质是一个继承了 `Annotation` 的特殊接口,其具体实现类是 Java 运行时生成的**动态代理类**,通过反射获取注解时,返回的是 Java 运行时生成的动态代理对象 `$Proxy1`,通过代理对象调用自定义注解(接口)的方法,会最终调用 `AnnotationInvocationHandler` 的 `invoke` 方法,该方法会从 `memberValues` 这个Map 中找出对应的值,而 `memberValues` 的来源是 Java 常量池
85448545

85458546
解析注解数据的原理:注解在哪个成分上,就先拿哪个成分对象,比如注解作用在类上,则要该类的Class对象,再来拿上面的注解
85468547

@@ -11534,11 +11535,11 @@ Java 对象创建时机:
1153411535

1153511536
1. 一个实例变量在对象初始化的过程中会被赋值几次?
1153611537

11537-
JVM在为一个对象分配完内存之后,会给每一个实例变量赋予默认值,这个实例变量被第一次赋值
11538+
JVM 在为一个对象分配完内存之后,会给每一个实例变量赋予默认值,这个实例变量被第一次赋值
1153811539
在声明实例变量的同时对其进行了赋值操作,那么这个实例变量就被第二次赋值
1153911540
在实例代码块中又对变量做了初始化操作,那么这个实例变量就被第三次赋值
1154011541
在构造函数中也对变量做了初始化操作,那么这个实例变量就被第四次赋值
11541-
在Java的对象初始化过程中,一个实例变量最多可以被初始化4次
11542+
在 Java 的对象初始化过程中,一个实例变量最多可以被初始化4次
1154211543

1154311544
2. 类的初始化过程与类的实例化过程的异同?
1154411545

0 commit comments

Comments
 (0)