注解
一些内置注解
@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的动态性让编程的时候更加灵活!