长春 房地产网站建设,亚马逊amz123,海报制作网站免费,公司做网站是做什么账务处理注解目前非常的流行#xff0c;很多主流框架都支持注解#xff0c;而且自己编写代码的时候也会尽量的去用注解#xff0c;一时方便#xff0c;而是代码更加简洁。 注解的语法比较简单#xff0c;除了符号的使用之外#xff0c;它基本与Java固有语法一致。Java SE5内置了三… 注解目前非常的流行很多主流框架都支持注解而且自己编写代码的时候也会尽量的去用注解一时方便而是代码更加简洁。 注解的语法比较简单除了符号的使用之外它基本与Java固有语法一致。Java SE5内置了三种标准注解 Override表示当前的方法定义将覆盖超类中的方法。 Deprecated使用了注解为它的元素编译器将发出警告因为注解Deprecated是不赞成使用的代码被弃用的代码。 SuppressWarnings关闭不当编译器警告信息。 上面这三个注解多少我们都会在写代码的时候遇到。Java还提供了4中注解专门负责新注解的创建。 Target 表示该注解可以用于什么地方可能的ElementType参数有 CONSTRUCTOR构造器的声明 FIELD域声明包括enum实例 LOCAL_VARIABLE局部变量声明 METHOD方法声明 PACKAGE包声明 PARAMETER参数声明 TYPE类、接口包括注解类型或enum声明 Retention 表示需要在什么级别保存该注解信息。可选的RetentionPolicy参数包括 SOURCE注解将被编译器丢弃 CLASS注解在class文件中可用但会被VM丢弃 RUNTIMEVM将在运行期间保留注解因此可以通过反射机制读取注解的信息。 Document 将注解包含在Javadoc中 Inherited 允许子类继承父类中的注解 定义一个注解的方式 1 Target(ElementType.METHOD)
2 Retention(RetentionPolicy.RUNTIME)
3 public interface Test {
4
5 } 除了符号注解很像是一个接口。定义注解的时候需要用到元注解上面用到了Target和RetentionPolicy它们的含义在上面的表格中已近给出。 在注解中一般会有一些元素以表示某些值。注解的元素看起来就像接口的方法唯一的区别在于可以为其制定默认值。没有元素的注解称为标记注解上面的Test就是一个标记注解。 注解的可用的类型包括以下几种所有基本类型、String、Class、enum、Annotation、以上类型的数组形式。元素不能有不确定的值即要么有默认值要么在使用注解的时候提供元素的值。而且元素不能使用null作为默认值。注解在只有一个元素且该元素的名称是value的情况下在使用注解的时候可以省略“value”直接写需要的值即可。 下面看一个定义了元素的注解。 1 Target(ElementType.METHOD)
2 Retention(RetentionPolicy.RUNTIME)
3 public interface UseCase {
4 public String id();
5 public String description() default no description;
6 } 定义了注解必然要去使用注解。 1 public class PasswordUtils {2 UseCase(id 47, description Passwords must contain at least one numeric)3 public boolean validatePassword(String password) {4 return (password.matches(\\w*\\d\\w*));5 }6 7 UseCase(id 48)8 public String encryptPassword(String password) {9 return new StringBuilder(password).reverse().toString();
10 }
11 } 使用注解最主要的部分在于对注解的处理那么就会涉及到注解处理器。 从原理上讲注解处理器就是通过反射机制获取被检查方法上的注解信息然后根据注解元素的值进行特定的处理。 public static void main(String[] args) {ListInteger useCases new ArrayListInteger();Collections.addAll(useCases, 47, 48, 49, 50);trackUseCases(useCases, PasswordUtils.class);}public static void trackUseCases(ListInteger useCases, Class? cl) {for (Method m : cl.getDeclaredMethods()) {UseCase uc m.getAnnotation(UseCase.class);if (uc ! null) {System.out.println(Found Use Case: uc.id() uc.description());useCases.remove(new Integer(uc.id()));}}for (int i : useCases) {System.out.println(Warning: Missing use case- i);}} Found Use Case:47 Passwords must contain at least one numeric Found Use Case:48 no description Warning: Missing use case-49 Warning: Missing use case-50 上面的三段代码结合起来是一个跟踪项目中用例的简单例子。 写到这里博主想到结合枚举、注解、反射、拦截器等内容是否可以写一套用户权限验证呢 将用户权限用枚举的方式给出注解元素表明某个方法必须拥有某些权限才能调用拦截器拦截请求方法用户是否有权限对该方法进行调用根据用户不同的权限进行不同的处理。欢迎讨论 转载于:https://www.cnblogs.com/yaowen/p/4832602.html