注解与反射

注解

  一些内置注解

@Override 注解重写  添加到方法上
@Deprecated 过时注解,不推荐 添加到方法上
@SuppressWarnings() 抑制编译时的警告信息 添加到方法上

元注解

元注解  主要用于注解其他的注解
@Target 用于描述注解的使用范围
@Retention 描述注解的生命周期 (source<class<tuntime)优先级
@Documented 说明该注解将被包含在javadoc中
@Inherited 说明子类可以继承父类中的该注解

定义一个注解

@Target(value = {ElementType.METHOD,ElementType.TYPE})//注解在方法上,注解在类上
@Retention(value = RetentionPolicy.RUNTIME)//注解在运行时有效
@interface MyAnn{

}

注解的属性值

@Target(value = {ElementType.METHOD,ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
@interface MyAnnotation{
    //注解的参数:参数类型+参数名()
    String name();
    int age() default 0;
    int id() default -1;//如果值为-1代表不存在
    String[] schools();
}

@interface MyAnnotation2{
    String value();//如果注解只有一个属性,并且属性名为value,则可以省略不写value
}

具体使用

//注解可以显示赋值,如果没有默认值,我们必须给注解赋值
    @MyAnnotation(name = "五月",schools = {"江南大学","清华大学"})
    @MyAnnotation2("傻逼")
    public void test(){}

 

反射

静态和动态语言

动态语言

➢是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被 引进,已有的函数可以被删除或是其他结构.上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。
➢主要动态语言: Object-C、 C#、 JavaScript. PHP、Python等。
静态语言
➢与动态语言相对应的,运行时结构不可变的语言就是静态语言。如Java、 C、C++.
➢Java不是动态语言,但Java可以称之为"准动态语言”。即Java有一定的动态性,我们可以利用反射机制获得类似动态语言的特性。Java的动态性让编程的时候更加灵活!


上一篇:Latex 双栏模板下文字环绕的实现


下一篇:Java 注解