文章目录
注解
用于说明程序,是绑定到程序代码中的元数据
作用
- 编写文档。通过标识注解生成DOC文档
- 利用属性配置文件
- 编译检查
内置注解
@Override
重写检查
@Deprecated
标注内容已过时
@SuppressWarning
压制警告
@FunctionaallInterface
标识接口中只允许有一个抽象方法
元注解
用于描述注解的注解
@Document
被修饰类是否在JavaDOC当中
@Retention
定义注解的声明周期
SOURCE 编译期后消失
CLASS 类加载期后消失
RUNTIME 爷是永恒的
@Target
指定注解的对象。该注解可以修饰谁
@Inherited
注解是否适用于子类
自定义注解
格式
元注解
public @interface name{
method1();
method2() default ...
.....
}
其中在注解里定义的方法称为属性,允许的返回值有 基本数据类型 String 数组 Annotation Enum。其中default
关键字可用于设置默认值
示例如下:
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String className();
String methodName();
int len() default 30 ;
}
实质上,注解是一个接口,继承自Annotation
public interface com.java.learning.MyAnnotation extends java.lang.annotation.Annotation {
public abstract java.lang.String className();
public abstract java.lang.String methodName();
public abstract int len();
}
使用注解
使用注解时,要对所有的属性赋值name=value
(有默认值的可以不用)。特殊的是,当注解中仅有一个叫做value
的属性,在使用时可不指定属性名,如Annotation(10)
例如: 动态设定运行函数
序列化
将JVM中对象信息转换为可以传输/存储的过程。所有可序列化的对象都要实现Serializable
接口,该接口是一个标记接口,仅用于声明
// 这就是源码,里面是空的
public interface Serializable {
}
实现对象序列化/反序列化
-
首先令 要序列化对象的类 implements Serializable 接口
public class C2 implements Serializable { private int a; private String obj; public C2(int a, String obj) { ...} @Override public String toString() { ...}