1. 父类变量需要序列化时,父类需要实现Serializable接口么?
    答:需要,父类也需要实现Serializable接口,因为父类的变量还是属于父类,不属于子类。
  2. transient关键字的作用?
    答:使用transient关键字可以阻止变量被序列化。而在反序列化后,transient关键字修饰的变量会被设置为其对应类型的初始值。比如int基础数据类型的初始值就是0,引用类型的初始值就是null。
  3. 注解是什么?
    答:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。可以把注解理解成一个用来声明包、类、字段、方法、局部变量、方法参数的标签,它不是代码的一部分。
  4. 描述一些你开发中常见的注解和作用?
    答:
    @Override:标记方法是否覆盖父类中声明的元素,同时告诉编译器要检查这个方法是否是实现父类的方法,如果不是,编译器会给出错误提示。
    @Deprecated:用来标记过时的元素。
    @SuppressWarnings:消除一些特定的警告信息。
    @SafeVarargs:参数安全类型注解。
    @FunctionalInterface: Java 1.8 版本引入的新特性,指定某个接口是函数式接口。
    @RestController:表示这是控制器类,需要被注入spring容器,同时数据以json格式返回
  5. 说说几个元注解和它们的作用?
    答:

元注解

作用

@Target

标记注解所修饰的对象范围,比如类,方法等

@Retention

标记注解被保留的级别,或者可以理解成注解的存活期

@Documented

标记注解可以被javadoc工具记录,可以文档化

@Inherited

标记注解可以被继承,子类可以继承父类中被@Inherited修饰的注解

@Repeatable

表明标记的注解可以多次应用于相同的声明或类型,Java8引入的,具体应用可参考@Scheduled注解

  1. 列举一些Target的具体取值类型和作用?
    答:

名词

修饰目标

TYPE

表示此注解可以用在类或接口上

FIELD

表示此注解可以用在域上

METHOD

表示此注解可以用在方法上

PARAMETER

表示此注解可以用在参数上

CONSTRUCTOR

表示此注解可以用在构造方法上

LOCAL_VARIABLE

表示此注解可以用在局部变量上

ANNOTATION_TYPE

表示此注解可以用在注解类型上

PACKAGE

用于描述包

TYPE_PARAMETER

对普通变量的声明

TYPE_USE

能标注任何类型的名称

  1. 列举一些Retention的具体取值类型和作用?
    答:

名称

作用

SOURCE

注解只在源码阶段被保留,即只在源文件中存在

CLASS

注解只在编译阶段有效,即只在Class文件中被保留

RUNTIME

注解在运行时有效,所以会被加载到JVM中,可以通过反射的获取调用

  1. 怎么自定义一个注解?
    答:注解定义和接口有点像,就是前面多了个@。示例代码如下:
public @interface Person {}
  1. 注解类中可以定义哪些对象类型? 答:返回类型必须是基本类型,String,Class,Enum或数组类型之一。示例代码如下:

java中为什么父类显示已经定义 java默认父类_父类