注解和反射原理(Annotation)

文章介绍了Java中常见的注解如@Override、@Deprecated和@SuppressWarnings,以及元注解@Target和@Retention的作用。同时,讲解了如何使用反射动态创建类对象,虽然反射提供了灵活性,但可能影响性能。文中还提到了Class对象的获取方式和静态代码块的执行顺序。
摘要由CSDN通过智能技术生成

     常见的注解原理有三类分别是:@Override(重写方法,例如线程中当继承了Runnable接口的时候我们需要重写Run方法就会看到这样的符号) @Deprecated(存在危险或者已经废除的方法,不推荐程序员使用的方法,但是方法依旧存在,也可以运行) @SuppressWarnings(警告,例如说一些没有用到的常量符号,可以通过这样的注解去除)

        元注解的方式

1、@Target({ElementType.Type/Method})

2、@Retention (Runtime(最常用的)>CLASS>sources) 以上两个是最常用的

package TestSleep;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

public class TestAnno {
    @myAnnotation(name = "cak")
    public void method(){

    }

    @myAnnotation1(v = "cak")
    public void method1(){

    }
}

@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface myAnnotation{
    String name();
    int id() default -1;//可以加一个默认值
}

@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface myAnnotation1{
    //不成文规定 value可以省略名字,但是新版本不加会报错
    String value();

}

3、@Decomented 是否将注释生成到文本当中

4、@Inherited 是否继承父类的方法

此外只有一个参数时候推荐使用value()函数命名,然后注解里面的参数定义为类型+参数名字()

反射(java.Reflection):

        优点是动态创建具有灵活性,缺点是对性能有影响,不宜全部使用

        创建类(class)对象,这里要说名一个类只有一个对象和其创建方式没有关系,可以用.hashcode()方法对类对象进行观测。

        创建对象的方法:class c1 = person.getClass()

                                     class c2 = class.forName("包名+类名")

                                     class c3 =  person.class

        虽然以上三种方式都是创建Class对象但是对象都是一样的,此外对于Static代码块和定义,就是谁在前谁先运行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值