?????????????????????????????????????????????濴?????????????????????????????????? JAVA ?????У????д???????????????????????????????????????????????????????????????????????????????????£?????????????????????????????????????????????????????????????3??????
????1?????????????д??????????????????????
????2????????????????????????
????3??????????????????????
???????????Щ?????濪????????
??????????
????JDK 5??????????????е????annotation?????????? ??????Java??????в?????????????????????????????????????? ?????????????????е????????????????????????????????????????????????????????
????Java?г??????
????????????????????????? JAVA ? IDE ????????Щ??????????????JDK ?????????????????????С?
????JDK??????
????@Override
????@Deprecated
????@Suppvisewarnings
?????????????????
????Spring
????@Autowired
????@Service
????@Repository
????Mybatis
????@InsertProvider
????@UpdateProvider
????@Options
???????????
???????????л??????
????· ?????? ????????????д????????? .class ????????????
????· ???????? ??????????? .class ????ж???????????3??JDK????????????
????· ???????? ???????н?λ????????????????????????????????? @Autowired ??
???????????????
????· ????JDK?????
????· ??????????????
????· ????????
????????
????????????????
????????????
????????????????????????????????????????????????????????????????????
@Target({ElementType.METHOD?? ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Description {
String desc();
String author();
int age() default 18;
}
????1????? @interface ???????????
????2????????????????????????????????
????3???????? default ??????????????
????4??????г?????????????????????????????? ???????????? ??? String ?? Class ?? Annotation ?? Enumeration
????5????????????????????????????? value() ?????????????????????????? = ??
????6????????????г??????г????????? ??????
????7????????????????е???????? Description ????????4?????
????????????
????Target
??????????????????????????????????????????? JAVA ???е??????
????1??ElementType.CONSTRUCTOR ????????
????2??ElementType.FIELD ?????
????3??ElementType.LOCAL_VARIABLE ?????????
????4??ElementType.METHOD ??????
????5??ElementType.PACKAGE ????
????6??ElementType.PARAMETER ?? ????
????7??ElementType.TYPE ???????
?????????????????б???? Description ?????????????????????????
????@Target({ElementType.PARAMETER?? ElementType.TYPE})
????Retention
??????????????????????????3?????
????RetentionPolicy.SOURCE ??????????????????????
????RetentionPolicy.CLASS ????????????? class ????У???????????
????RetentionPolicy.RUNTIME ?????????????????????????
??????????????????б???? Description ???????? class ????У????????????????
????@Retention(RetentionPolicy.CLASS)
????Inherited
???????????????????????????????м?С?????????????????У??????????м???????????????? ?????????????????????????????????????????????????и?????????????????????и????
????Documented
????????????? JAVA DOC ???????????
???????????????
???????????????
????@<?????>(<?????1>=<????1>?? <?????1>=<????1>?? <?????1>=<????1>?? ...)
???????е??????????????????????????
????@Description(desc="description"?? author="swifter"?? age=18)
????public String getColor() {
????return "red";
????}
????????????????????????????????????????÷????????????????????л??????????????????????????????????????????????????д???????????????????????????????????????????????
??????????? Person ??
@Description(desc="person interface"?? author="swifter")
public abstract class Person {
@Description(desc="method getName"?? author="swifter")
abstract String getName();
abstract void doSomething();
}
??????????? Child ????? Person ??
public class Child extends Person {
@Override
@Description(desc="child method getName"?? author="swifter")
public String getName() {
return "get child";
}
@Override
public void doSomething() {
System.out.println("do something in child class");
}
}
???????????
?????????????????????????????????????н??????????????????????????????????????????? ????? ??????????????????????????е??????
???????????????????????????????? Class ????????????????????????????в???????????????????
Class<Child> clazz = Child.class;
if(clazz.isAnnotationPresent(Description.class)) {
Description description = clazz.getAnnotation(Description.class);
System.out.println(description.desc()+" : "+description.author());
}
Method[] methods = clazz.getMethods();
for(Method method : methods) {
if(method.isAnnotationPresent(Description.class)) {
Description description = method.getAnnotation(Description.class);
System.out.println(description.desc()+" : "+description.author());
}
}
???????????????????????????
????person interface : swifter
????child method getName : swifter
???????е?????????????????????????????????????????????????????????????????????????????п??????????????????????????????????????????Ч???????????????????????????????????????к???????