标签:nbsp cti use public 字节码 repeat 动态 运行 机制
1.注解是代码中特殊标记,作用是告知编译器做什么事
2.反射允许程序在运行状态时,对任意一个字节码获取它所有信息
3.内部类是定义在类中的嵌套类
4.匿名内部类是定义在类的同时创建该类的一个对象
5.lambda表达式是使用精简语法的匿名内部类
6.代码中使用注解的方式:“@注解名”
7.注解分为三种:基本注解、元注解、自定义注解
8.基本注解在JDK8中分为5种:
1)@Deprecated:表示某个程序元素(如类、方法)已过时
2)@Override:只用于方法,限定必须覆盖父类的方法,保证方法覆盖正确性
3)@SuppressWarnings:一直警告信息出现,用于类型、构造方法、成员方法、成员变量
、参数以及局部变量。语法格式:@SuppressWarnings(“警告参数”)或
@SuppressWarnings(value=“警告参数”)
4)@SafeVarargs:用于抑制堆污染警告。
堆污染是指一个不带泛型的对象赋值给带泛型的对象,将导致泛型对象污染
三种方式抑制堆污染警告:
(1)使用@SafeVarargs注解修饰引发该警告方法(推荐使用)
(2)使用@SuppressWarnings(“unchecked”)
(3)编译时使用-Xlint:varargs选项
5)@FunctionalInterface:指定接口必须是函数式接口值,该注解只修饰函数式接口
如果一个接口只有一个抽象方法,则该接口就是函数式接口
函数式接口为Lambda表达式准备,允许Lambda表达式创建函数式接口
public class app13_1 { public String name; public int age; @Deprecated//说明下面的show()方法已经过时 public void show(String name){ System.out.println(name); } @Override//限制必须覆盖父类Object的toString()方法 public String toString(){ return "姓名:"+name+" 年龄:"+age; } public static void main(String[] args) { app13_1 p = new app13_1(); p.show("张三");//因show()方法被@Deprecated注解,不赞成使用这个方法 } }
9.元注解:包括六种元注解类型
1)@Target:限制注解适用范围即可用于哪些程序元素
使用格式@Target(value=作用范围)
2)@Retention:说明注解保存范围
使用格式:@Retention(value=保存策略值)
3)@Document:指定被修饰注解可被javadoc.exe工具提取成文档
4)@Inherit:一个父类注解可被子类所继承。
5)@Repeatable:开发重复注解。jdk8允许多个注解修饰同一个程序元素
6)@类型注解:定义枚举时使用@Target(ElementType。TYPE_USE),
可用在任何用到类型的地方
10.自定义注解:
[public]@interface 注解名
{
数据类型 成员变量名() [default 初始值];
}
例如:@interface info//自定义注解info
{
String author() default "张三丰";//自定义注解成员变量author,初值为“张三丰”
}
11.动态获取程序信息以及动态调用对象的功能就是反射机制。
总结:了解了注解、反射、内部类,匿名内部类的概念
注解分为三种基本注解、元注解以及自定义注解的种类以及作用格式
标签:nbsp cti use public 字节码 repeat 动态 运行 机制
原文地址:https://www.cnblogs.com/kzf-99/p/14762618.html