Java里的简单注解

内置注解

@Override重写------方法上
@SuppressWarnings抑制编译器警告------属性、方法、类
@Deprecated标示已过时------属性、方法、类

自定义注解

1.简单自定义注解

//类型为@interface	
public @interface MyAnnotation{
}

//使用
@MyAnnotation()
public class Demo{   
}   

2.自定义注解成员属性

//类型为@interface		里面放我们需要的成员类型以及类型名
public @interface MyAnnotation{
    String value();
    Class type();
}

//使用时候可以传参
@MyAnnotation(value="",type=Object.class)
public class Demo{    
}    

3.自定义注解成员属性(有默认值)

//类型为@interface		里面放我们需要的成员类型以及类型名(配置默认值default)
public @interface MyAnnotation{
    String value() default "默认值";
    Class type() default void.class;//也可以写【object.class代表任何类型对象】
}

//使用(如果不传默认值也可以)
@MyAnnotation()
public class Demo{    
}  

元注解

元注解重点了解以下

@Retention注释要保留多久-------运行时加载到JVM里

@Target注释类型使用的成员元素种类

反射注解

对象:

Constructor构造器方法类
Field成员属性类
Method成员方法类

方法:

isAnnotaionPresent(Class annotationClass)查看是否添加了指定注解
getAnnotation(Class annotationClass)获取指定注解
getAnnotaions()获取所有注解数组

使用反射注解前提:@Retention(RetentionPolicy.RUNTIME)

案例:

手机:品牌型号、价格

自定义注解:备注、属性是否可启用

//1.自定义注解 
//1.1@Traget注释类型使用的成员元素种类
//1.2@Retention作为前提
@Traget(ElementType.FIELD);//注释类型使用的成员元素种类 是field类型
@Retention(RetentionPolicy.RUNTIME)
public @interface PhoneAnnotation{
    String remarks() default "";//备注
    boolean enable() default true;//属性是否启用
}




//2.使用自定义注解  如果有属性不启用则搭配@Deprecated标示已过时
public class CellPhone{
    @PhoneAnnotation(remarks="品牌型号")
    public String brdMdl;//品牌型号
    
    @Deprecated//使用到属性是否启用方法搭配这个属性  标示已过时
    @PhoneAnnotation(remarks="价格",enable="false")//此不启用
    public double price;//价格
}





//3.当我们使用的时候可用根据反射注解的一些方法来查看信息
public static void main(String[] args){
    Class c=CellPhone.class;
    Field fs[]=c.getDeclaredFields();
    
    for(Field f:fs){
        if(f.isAnnotationPresent(PhoneAnnoation.class)){//如果启用了属性的
            System.out.println(f.getName());
            
            PhoneAnnotation p=f.getAnnotaion(PhoneAnnotation.class);//获取注解    
            System.out.println(p.remarks());//备注
            System.out.println(p.enable());//使用启用
            
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值