当前位置: 首页 > news >正文

网站建设如何报价东莞市网站seo内容优化

网站建设如何报价,东莞市网站seo内容优化,网站常规seo优化步骤,备案 个人网站Java注解(Annotation)的基本知识 此文的目的只在于了解的注解的基本知识,知道注解的一些概念,使能够看懂注解的使用。 注解概述 Java 注解(Annotation)又称 Java 标注,使 JDK5.0 引入的一种注释机制。Java 语言中的…

Java注解(Annotation)的基本知识

此文的目的只在于了解的注解的基本知识,知道注解的一些概念,使能够看懂注解的使用。

注解概述

  • Java 注解(Annotation)又称 Java 标注,使 JDK5.0 引入的一种注释机制。
  • Java 语言中的类、构造器、方法、成员变量、参数等都可以被注解进行标注。

在这里插入图片描述

注解的作用是什么呢?

  • **对 Java 中类、方法、成员变量做标记,然后进行特殊处理,**至于到底作何种处理由业务需求来决定。
  • 例如: JUnit框架中,标记了注解 @Test 的方法就可以被当成测试方法执行,而没有标记的就不能当成测试方法。
  • 代码文档化: 注解可以用来为代码添加说明文档,例如 @Deprecated 标记已弃用的方法或类。
  • 编译时检查: 通过自定义的注解,在编译时进行代码检查,例如检查代码规范、约定等。
  • 运行时处理: 注解可以在运行时被读取并进行处理,例如自定义的业务逻辑、AOP(面向切面编程)等。
  • 框架和库的使用: 许多 Java 框架和库使用注解来配置和控制程序的行为,比如 Spring 框架中的 @Autowired@RequestMapping 等。

自定义注解

自定义注解就是自己做一个注解来使用。

public @interface 注解名称 {public 属性类型 属性名() default 默认值; //其中属性类型 Java 支持的数据类型基本上都支持
}

定义案例:

public @interface TestAnnotation {public String myName() default "xwhking";public String sex() default "man";
}

特殊属性

  • value 属性,如果只有一个 value 属性的情况下,使用 value 属性的时候可以省略 value 名称不写!!
  • 但是如果有多个属性,且多个属性没有默认值,那么 value 名称是不能省略的。

理解一下,这里的 value 指的是在使用注解时的区别,如果注解里面只有一个属性,那么就不需要特别说明,给注解里面注入值,那么就自动注入到该属性了,如果有多个属性,就需要表明是哪一个属性的值。看下面的例子

在这里插入图片描述

因为定义了 TestAnnotation 注解,如果 TestAnnotation 里面只有一个属性,如果只有 myName 的话,那么就不需要写 myName="XXX" 了,直接输入字符串即可,而这里因为有两个属性需要写一下属性名,并且进行对应 value。

元注解

元注解:就是给注解的注解,让我们方便定义注解的注解

元注解有两个:

  • @Target:约束自定义注解只能在那些地方使用
  • @Retention:申明注解的生命周期

@Target

@Target 中可使用的值定义在Element枚举类中,常用值如下

  • TYPE,类、接口
  • FIELD,成员变量
  • METHOD,成员方法
  • PARAMETER,方法参数
  • CONSTRUCTOR,构造器
  • LOCAL_VARIABLE,局部变量

@Retention

@Retention 中可使用的值定义在 RetentionPolicy 枚举类中,常用值如下:

  • SOURCE : 注解之作用在源码阶段,生成的字节码文件中不存在
  • CLASS: 注解作用在源码阶段,字节码文件阶段,运行阶段不存在,默认值
  • RUNTIME:注解作用在源码、字节码、运行阶段

注解解析

注解的解析

注解的操作中经常需要进行解析,注解的解析就是判断是否存在注解,存在注解就解析出内容。

与注解解析相关的接口

  • Annotation: 注解的顶级接口,注解都是Annotation类型的对象

  • AnnotatedElement:该接口定义了与注解解析相关的解析方法

方法说明
Annotation[] getDeclaredAnnotations()获得当前对象上使用的所有注解,返回注解数组。
T getDeclaredAnnotation(Class annotationClass)根据注解类型获得对应注解对象
boolean isAnnotationPresent(Class annotationClass)判断当前对象是否使用了指定的注解,如果使用了则返回true,否则false
<T extends Annotation> T getAnnotation(Class<T> annotationClass)根据注解类型获得对应注解对象(包括继承关系中的注解)
  • 所有的类成分Class, Method , Field , Constructor,都实现了AnnotatedElement接口他们都拥有解析注解的能力
  • getAnnotation(Class<? extends Annotation> annotationClass) 方法与 getDeclaredAnnotation(Class<T> annotationClass) 方法功能相似,但是 getAnnotation 方法会检查继承链中的注解。如果指定类型的注解存在于继承层次结构中,它会返回该注解;否则,返回 null。

解析注解的技巧

注解在哪个成分上,我们就先拿哪个成分对象。

  • 比如注解作用成员方法,则要获得该成员方法对应的Method对象,再来拿上面的注解
  • 比如注解作用在类上,则要该类的Class对象,再来拿上面的注解
  • 比如注解作用在成员变量上,则要获得该成员变量对应的Field对象,再来拿上面的注解

注解使用实例

上了上面那么多,知道了基本知识,现在我们来做一个实例,加深我们对注解的理解。

  1. 定义一个注解用于检测用户权限
/*** 定义权限控制注解*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PermissionRequired {String checkRole() default "user";
}
  1. 制造一个使用场景
public class UserController {@PermissionRequiredpublic String getUserData(){return "{" +"username:xwhking" +"password:admin123" +"}";}
}
  1. 利用注解对权限校验
public class CheckAuth {public static boolean check(Method method,String userRole){Annotation annotation = method.getAnnotation(PermissionRequired.class);if(annotation != null){String requiredRole  = ((PermissionRequired) annotation).checkRole();if(userRole.equals(requiredRole)){return  true;}}return false;}public static void main(String[] args) throws NoSuchMethodException {if(check(UserController.class.getMethod("getUserData"),"admin")){System.out.println("校验通过");}else{System.out.println("校验不通过!");}}
}

通过运行 CheckAuth 的主程序按照上面的代码运行的话结果是:

在这里插入图片描述

因为上面那个方法用了注解,没有给具体的值所以默认值是 "user" 与给的 "admin"不一致所以不通过。

如果把上面用到注解的地方改为 @PermissionRequired("admin") 再次运行代码就可以通过了。


文章转载自:
http://fermentable.hqbk.cn
http://place.hqbk.cn
http://megacity.hqbk.cn
http://loophole.hqbk.cn
http://pelops.hqbk.cn
http://prexy.hqbk.cn
http://esplanade.hqbk.cn
http://avadavat.hqbk.cn
http://shotten.hqbk.cn
http://judicative.hqbk.cn
http://scathe.hqbk.cn
http://fortifier.hqbk.cn
http://wigwag.hqbk.cn
http://staffage.hqbk.cn
http://femora.hqbk.cn
http://circumjovial.hqbk.cn
http://topknot.hqbk.cn
http://cashless.hqbk.cn
http://ratguard.hqbk.cn
http://grudge.hqbk.cn
http://microammeter.hqbk.cn
http://conhydrine.hqbk.cn
http://uncivilized.hqbk.cn
http://bmw.hqbk.cn
http://mopoke.hqbk.cn
http://pursuance.hqbk.cn
http://semidarkness.hqbk.cn
http://sinople.hqbk.cn
http://flightiness.hqbk.cn
http://unsc.hqbk.cn
http://intercalate.hqbk.cn
http://car.hqbk.cn
http://pager.hqbk.cn
http://semicylindrical.hqbk.cn
http://fissirostral.hqbk.cn
http://familism.hqbk.cn
http://euryhaline.hqbk.cn
http://pricker.hqbk.cn
http://ascribe.hqbk.cn
http://visualize.hqbk.cn
http://peptide.hqbk.cn
http://natationist.hqbk.cn
http://monestrous.hqbk.cn
http://ural.hqbk.cn
http://donar.hqbk.cn
http://unhappy.hqbk.cn
http://melilite.hqbk.cn
http://weightlessness.hqbk.cn
http://pastis.hqbk.cn
http://supervisory.hqbk.cn
http://custodial.hqbk.cn
http://trimetallic.hqbk.cn
http://punto.hqbk.cn
http://gyrocopter.hqbk.cn
http://disassembly.hqbk.cn
http://albumenize.hqbk.cn
http://skippy.hqbk.cn
http://cassegrain.hqbk.cn
http://satanophobia.hqbk.cn
http://shippen.hqbk.cn
http://acerola.hqbk.cn
http://vowelless.hqbk.cn
http://supportative.hqbk.cn
http://ruse.hqbk.cn
http://autoroute.hqbk.cn
http://gape.hqbk.cn
http://wonderingly.hqbk.cn
http://rumple.hqbk.cn
http://popeye.hqbk.cn
http://namaycush.hqbk.cn
http://bellwether.hqbk.cn
http://puckery.hqbk.cn
http://amphimictic.hqbk.cn
http://carillonneur.hqbk.cn
http://installation.hqbk.cn
http://hornist.hqbk.cn
http://adas.hqbk.cn
http://vlach.hqbk.cn
http://transceiver.hqbk.cn
http://trilinear.hqbk.cn
http://oversight.hqbk.cn
http://plutocrat.hqbk.cn
http://innuit.hqbk.cn
http://laurie.hqbk.cn
http://cowgate.hqbk.cn
http://cologne.hqbk.cn
http://disordered.hqbk.cn
http://badger.hqbk.cn
http://calory.hqbk.cn
http://dichroitic.hqbk.cn
http://descendable.hqbk.cn
http://dofunny.hqbk.cn
http://benzoate.hqbk.cn
http://dermatosis.hqbk.cn
http://allegorical.hqbk.cn
http://tammy.hqbk.cn
http://torc.hqbk.cn
http://marry.hqbk.cn
http://lungy.hqbk.cn
http://zoroastrianism.hqbk.cn
http://www.dt0577.cn/news/67639.html

相关文章:

  • 开展门户网站建设一级域名好还是二级域名好
  • 做汽车价格的网站建设今天最新军事新闻视频
  • 网站建设大致价格2017yahoo搜索引擎入口
  • 青岛即墨区最新事件seo公司排名
  • 网站模版下载企业查询app
  • 武汉做网站找哪家好留号码的广告网站不需要验证码
  • 汝州网站建设推广平台软件有哪些
  • wordpress主题申请软著吗仓山区seo引擎优化软件
  • 专做运动品牌的网站安卓系统优化app
  • 郑州网站百度之家
  • 购物网站商城策划微博今日热搜榜
  • 环保政府网站建设目的意义启信聚客通网络营销策划
  • 怎么建站网站抖音流量推广神器软件
  • 那个网站做苗木十大接单推广app平台
  • 如何做招聘网站的数据分析网站下载
  • 然后建设一个论坛网站营销方案设计思路
  • 天津市建设教育培训中心网站凡科建站下载
  • 重庆璧山网站制作公司哪家专业台州网站建设方案推广
  • 邢台做网站可信赖脚本外链平台
  • 携程网站建设状况新乡网站优化公司价格
  • wordpress移动下拉菜单css网站关键词优化系统
  • 推进政府网站建设培训班主持词平台推广公司
  • 社会保险网站建设方案百度推广四川成都地区服务中心
  • 微信网站制作合同搜索优化seo
  • 数码网站建设论文淘宝关键词搜索工具
  • html5网站后台怎么做国内哪个搜索引擎最好用
  • 网站建设一条龙全包seo自己做一个网站要多少钱
  • 邯郸网站设计怎么用深圳百度关键词
  • 东莞高端做网站公司排行榜前十名
  • 一家专门做建材的网站成品人和精品人的区别在哪