Java复习04 注解和反射
初学 注解和反射的时候 我的问题是 什么是注解? 什么是反射?单例模式 Stream ForkJoin有什么区别? 注解的分类有哪些?怎么区分?反射的分类有哪些?怎么区分? 反射里面Constructs Method Class 有什么区别?
1.注解(Annotations):
想象一下你在玩一款视频游戏。在这个游戏里,有些特殊的道具可以给你的角色带来特殊能力或者是解锁新的任务。
注解 就像是这些道具。它们不会改变游戏的基本玩法(也就是你的代码本身是怎么运行的),但它们可以给你的代码加上特殊标记(比如,让其他人知道这段代码不应该再被使用,或者是让代码按照一定的方式来运行)。这些注解有的是游戏(Java)自带的,有的则可以由玩家(程序员)自己创造。
2.反射(Reflection):
使用反射就像是你突然得到了一副能看见隐藏东西的眼镜。当你戴上这副眼镜,你可以看到游戏中不同角色和道具的内部信息,比如它们的能力值或者它们隐藏的秘密。在Java中,反射让你在程序运行的时候查看和修改对象的内部信息,即使平常我们看不见这些信息。
- 使用反射,你可以看到一个对象的类信息(就像看角色的属性一样)。
- 你可以找到和使用它的方法(就像发现角色可以使用的特殊技能)。
- 你还可以创建新的对象或者修改现有对象的属性(就像改变角色的装备或者能力值)。
所以,反射就像是一副能让你看见更多内部信息的眼镜。
3.单例模式(Singleton Pattern):
这就好比学校里只有一个校长。无论什么时候你需要找校长,都是同一个人。单例模式确保了一个类在Java程序中只有一个实例,每次你要用这个类的时候,都会得到同一个对象。
4.Stream:
假如你在河边放了一艘小船,你可以顺流而下一边欣赏风景,一边经过不同的站点。在Java中,Stream就是数据的流,让你可以一步步地对数据进行操作,就像沿着河流顺流而下一样。
5.ForkJoin:
这就像是把一项大任务分成很多小任务,让你的朋友们一起帮忙。每个人完成自己的部分后,再把结果合起来,完成整个大任务。ForkJoin是Java中的一个框架,它帮助程序做到这一点,特别适合用于可以并行处理的大任务。
注解的分类
主要有以下几种:
元注解(Meta-Annotations):
元注解就是用来定义注解的注解。你可以想象元注解好比是游戏规则,它们告诉其他注解应该怎么"玩游戏"。Java中有几个元注解,比如:
@Target
:告诉注解可以放在Java代码的哪些部分,比如方法、类或变量上。@Retention
:告诉Java程序这个注解要保留多久,是只在代码中存在,还是在编译后的.class文件中,或者是在运行时都可以访问。@Inherited
:告诉Java如果一个类使用了这个注解,那么子类自动继承这个注解。@Documented
:告诉Java这个注解应该被包括在用户的文档中。
内置注解(Built-in Annotations):
内置注解是Java自带的注解,你可以直接在代码中使用。是游戏开发者给你的默认道具,比如一个可以让角色跳得更高的弹簧鞋(@Override
)或者一个提醒你这个道具即将在下个版本中被替换掉的标签(@Deprecated
)。
一些常见的内置注解有:
@Override
:告诉编译器你打算重写一个方法。@Deprecated
:告诉别人这个方法或者类已经过时了,建议不要用。@SuppressWarnings
:告诉编译器忽略特定的警告信息。
自定义注解:
自定义注解就是你可以创建自己的注解。想象一下,如果你在游戏中可以创建一个全新的角色,你可以定义它的名字、能力和特点。自定义注解允许你为你的代码定义特殊的规则或者提供特定的信息。或者理解成就是你有机会创造自己的道具。你可以决定它叫什么,能做什么,以及什么时候使用它。
反射读取注解(Reflection to Read Annotations):
反射读取注解就像是用一个特殊的镜子来查看物体上面有哪些标签。在Java中,你可以用反射这个功能来查看代码中的注解,了解注解里存储的信息。
反射的分类
其实是指通过反射我们可以做什么:
- 访问类的信息(比如类的名字、它的方法和属性)。
- 创建对象(就像有了乐高说明书,你可以按照说明书建造一个乐高模型)。
- 调用方法(就像遥控一个机器人按你说的去做)。
- 修改属性(就像改变乐高模型的一块砖的位置)。
在反射中,Constructor
、Method
和 Class
代表不同的事物:
Constructor
是建造者,就像乐高模型的说明书,告诉你怎么去建造一个对象。Method
是操作指南,告诉你可以用这个对象做什么,比如一个遥控车的遥控器上的按钮。Class
是整个图纸,告诉你这个对象是什么,有什么特点,是不是像一个遥控车或者一个机器人。