语言

Java源程序中可以通过 @interface AnnotationName {} 来自定义一个AnnotationName的注解,定义一个注解就是定义了一个类。

按照注解定义时元注解@Retention的枚举属性value的枚举值不同进行划分,注解可以分为三种。

  1. 元注解@Retention""可以用来修饰注解,是注解的注解,所以称她为元注解。元注解@Retention有一个枚举类型(Enum RetentionPolicy类型)的属性value。枚举类型RetentionPolicy有三个枚举值:CLASS , RUNTIMESOURCE

  2. 注解定义时候,用@Retention(RetentionPolicy.SOURCE )修饰的注解, 表示注解的信息只会留在源文件中。编译时信息会被编译器抛弃,不会留在class文件中。

  3. 注解定义时候,用@Retention(RetentionPolicy.CLASS)修饰的注解,表示注解的信息会被保留在class文件(字节码文件)中。当程序编译时要保留注解信息,但在运行的时候不会被虚拟机读取;

  4. 注解定义时候,用@Retention(RetentionPolicy.RUNTIME )修饰的注解,表示注解的信息被保留在class文件(字节码文件)中。当程序编译时要保留注解信息,在运行的时候会被虚拟机识别;

所以,只有注解定义时候,用@Retention(RetentionPolicy.RUNTIME )修饰的注解,可以供程序在解释执行的时候读取,读取后可以方便地分析程序.

  1. 常用的注解有 " 已弃用@Deprecated/重写@Override / 压制@SuppressWarnings "

这里再提下: Java类中定义的方法和C++类中定义的方法不一样,Java类的方法都是可以Override的, 而C++类只有virtual关键字修饰的方法(虚函数)是可以重写的。
也就是说,Java类中所有的方法缺省都是虚函数,如果一个方法不想被其派生类重写,那么就给这个类用上final修饰符。

C++中,类中用=0(例如virtual int foo(void* p)=0;)来定义一个纯虚函数,有纯虚函数的类称为“抽象类”,只有纯虚函数的类称为“纯抽象类”;
Java中,类中用关键字abstract 来定义一个"纯虚函数"(例如abstract int foo(int n));)称为抽象函数。Java抽象类是指用abstract修饰声明的类。Java中接口类就是C++中的“纯抽象类”,接口类是指用interface修饰的类。

工具链

IDE

其他SDK等开发环境

posted on 2017-09-16 14:05  來時的路  阅读(144)  评论(0编辑  收藏  举报