当前位置:网站首页>注解与反射
注解与反射
2022-07-05 05:23:00 【醉卧雕龙舫 、】
一:注解
自定义注解:
import java.lang.annotation.*;
/** * 内置注解 * @Override 表示重写 * @Deprecated 表示已经弃用 * @SuppressWarnings 表示不提示警告 */
/** * 元注解-自定义注解 * @author liu ming yong */
@MyAnnotation(value = "自定义注解")
public class Annotation {
// 注解如果参数没有默认值,则必须给注解赋值
@MyAnnotation(value = "qq")
public void s(){
}
}
/** * @Target 表示注解可以用在什么地方 TYPE(类),METHOD(方法) * @Retention 表示注解在什么地方有效 runtime(运行时)>class(编译成的字节码)>sources(源码) * @Documented 表示是否将注解生产在JAVAdoc中 * @Inherited 表示子类可以继承父类的注解 * @author liu ming yong */
@Target(value = {
ElementType.TYPE,ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
@Inherited
@interface MyAnnotation {
// 注解的参数:参数类型 参数名();
String value();
String name() default "my name is liu ming yong";
int age() default 0;
String[] schools() default {
"国防大学","清华大学"};
}
二:反射
反射概念:
Reflection(反射)是java被视为准动态语言(在运行期间可改变结构的语言)的关键,反射允许程序在执行期间获取到任何类的内部信息,并可直接操作任意对象的内部属性或方法。
类加载完成后,在堆内存方法区中就产生了一个Class类型对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。
获得反射Class的几种方式:
/** * @author liu ming yong */
public class Reflection01 {
public static void main(String[] args) throws ClassNotFoundException {
Person person = new Student();
// 方式一:通过对象获得
Class c1 = person.getClass();
System.out.println(c1);
// 方式二:通过forName获得
Class c2 = Class.forName("注解与反射.Student");
System.out.println(c2);
// 方式三:通过类名.class获得
Class c3 = Student.class;
System.out.println(c3);
// 方式四:通过基本数据类型的包装类获取
Class c4 = Integer.TYPE;
System.out.println(c4);
// 获取父类类型
Class c5 = c1.getSuperclass();
System.out.println(c5);
}
}
class Person {
String name;
public Person() {
}
public Person(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
'}';
}
}
class Student extends Person {
}
获取类运行时的结构:
边栏推荐
- National teacher qualification examination in the first half of 2022
- Optimization scheme of win10 virtual machine cluster
- Research on the value of background repeat of background tiling
- Acwing 4301. Truncated sequence
- Zheng Qing 21 ACM is fun. (3) part of the problem solution and summary
- [turn]: Apache Felix framework configuration properties
- 嵌入式数据库开发编程(五)——DQL
- [to be continued] [UE4 notes] L3 import resources and project migration
- ssh免密登录设置及使用脚本进行ssh登录并执行指令
- [to be continued] I believe that everyone has the right to choose their own way of life - written in front of the art column
猜你喜欢

sync.Mutex源码解读

Use of snippets in vscode (code template)

支持多模多态 GBase 8c数据库持续创新重磅升级

对象的序列化

Count sort

Merge sort

To the distance we have been looking for -- film review of "flying house journey"
![To be continued] [UE4 notes] L4 object editing](/img/0f/cfe788f07423222f9eed90f4cece7d.jpg)
To be continued] [UE4 notes] L4 object editing

Romance of programmers on Valentine's Day
![[to be continued] [depth first search] 547 Number of provinces](/img/c4/b4ee3d936776dafc15ac275d2059cd.jpg)
[to be continued] [depth first search] 547 Number of provinces
随机推荐
小程序直播+电商,想做新零售电商就用它吧!
Csp-j-2020-excellent split multiple solutions
Haut OJ 1321: mode problem of choice sister
软件测试 -- 0 序
Corridor and bridge distribution (csp-s-2021-t1) popular problem solution
Use the command character to close the keyboard command of the notebook
Pointnet++学习
C language Essay 1
Demonstration of using Solon auth authentication framework (simpler authentication framework)
YOLOv5添加注意力机制
The next key of win generates the timestamp file of the current day
2022/7/1 learning summary
Learning notes of "hands on learning in depth"
Kali 2018 full image download
Use of snippets in vscode (code template)
To be continued] [UE4 notes] L4 object editing
服务熔断 Hystrix
Add level control and logger level control of Solon logging plug-in
sync.Mutex源码解读
Under the national teacher qualification certificate in the first half of 2022