注解与反射

注解

什么是注解

  1. 可以被其他程序读取
  2. 不是程序本身,可以对程序作出解释(这一点和注释没什么区别)
  3. 可以通过反射机制编程实现对这些元数据的访问

内置注解

@Override:重写

@Deprecated:标注过时

@SuppressWarnings : 用来抑制编译时的警告信息

元注解:作用是负责注解其它注解

  • @Target:描述注解的使用范围
  • @Retention:描述注解的生命周期
  • @ Document:表示是否将我们的注解生成在javadoc中
  • @Inherited:子类可以继承父类的注解

自定义注解

@interface : 用来自定义注解

package com.yang.anno;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Test.MyAnnotation(age=22)
public class Test {
    
    public void test(){
        
    }
    
    
    @Target({ElementType.TYPE,ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    @interface MyAnnotation{
        //注解的参数:参数类型 +参数名();当参数名为value时可以要使用的地方省略参数名
        //int age()+default "" 可设置默认值
        int age();
    }
}

反射

获取class类的几种方法

  1. 已知具体的类通过类的class属性获取 推荐使用

    Class class=Person.class();
    
  2. 已知某个类的实例,通过调用该实例的getClass()方法获取Class对象

    Class class=person.getclass();
    
  3. 已知某个类的全类名,通过ForName()获取

    Class class=Class.forName("Demo01.Student")
    
  • 同一个类型、同一个类只有一个Class对象,一个类被加载后,类的整个结构都会被封装在Class对象中

通过反射获取运行时类的完整结构

  • Field
  • Method
  • Constructor
  • SuperClass
  • Interface
  • Annotation

getFields():只能找到public属性

getDeclaredFields():找到全部的属性

getField("") 获取指定属性

getDeclaredField()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲲鹏~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值