在看项目代码的时候,经常会看到@XXXX这样的写法,有的有参数、有的没有参数。
java.lang.annotation.Annotation 接口中有这么一句话,用来描述:所有的注解类型都继承自这个普通的接口(Annotation),注解的本质就是一个继承了 Annotation(注解) 接口的接口。
- @Documented
- @Retention(RetentionPolicy.RUNTIME)
- @Target(ElementType.PARAMETER)
- public @interface Param {
- /**
- * Returns the parameter name.
- *
- * @return the parameter name
- */
- String value();
- }
1、元注解
- @Target:注解的作用目标
- @Retention:注解的生命周期
- @Documented:注解是否应当被包含在 JavaDoc 文档中
- @Inherited:是否允许子类继承该注解
@Target:用于指明被修饰的注解最终可以作用的目标是谁,也就是指明,你的注解到底是用来修饰方法的?修饰类的?还是用来修饰字段属性的。语法如下:
@Target(value = {ElementType.METHOD})
@Retention: 注解指定了被修饰的注解的生命周期。语法如下:
@Retention(value = RetentionPolicy.RUNTIME)
2、定义个日志注解
-
- import java.lang.annotation.ElementType;
- import java.lang.annotation.Retention;
- import java.lang.annotation.RetentionPolicy;
- import java.lang.annotation.Target;
- /** * 接口日志注解 * @see InterfaceLogAspect * */
- @Retention(RetentionPolicy.RUNTIME)
- @Target(ElementType.METHOD)
- public @interface InterfaceLog { String value() default ""; }
-
-
Java中的接口(Interface)和抽象类(Abstract Class)都是用于实现抽象的类型,但它们之间有一些关键的区别和关系。
关系:
接口和抽象类都可以包含抽象方法和常量。这意味着它们都可以被实现或继承,但不能被实例化。
区别:
继承:
方法:
常量:
设计理念:
使用场景:
java中接口的设计原则
在Java中,接口是一种抽象类型,用于定义一组规范或标准。设计接口时,应该遵循以下原则:
遵循这些原则可以帮助设计出更好的接口,提高代码的可读性、可维护性和可扩展性。