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

网站宽屏版计算机网络实验 做网站的

网站宽屏版,计算机网络实验 做网站的,网站建设公司专业,淘宝网站SEO怎么做目录 问题: 作用#xff1a; 原理#xff1a; 注解的限制 拓展#xff1a; 问题: 今天刷面经#xff0c;发现自己不懂注解的原理#xff0c;特此记录。 作用#xff1a; 注解的作用主要是给编译器看的#xff0c;让它帮忙生成一些代码#xff0c;或者是帮忙检查…目录 问题: 作用 原理 注解的限制 拓展 问题: 今天刷面经发现自己不懂注解的原理特此记录。 作用 注解的作用主要是给编译器看的让它帮忙生成一些代码或者是帮忙检查、判断和校验数据。 1.给编译器看 帮助编译器进行语法检查如 Override、Deprecated)。通过注解处处理器生成代如Lombok的Getter,Setter)。 2.给运行时框架看 通过反射机制动态读取注解信息实现功能增强如依赖注入、AOP、配置管理、数据验证等。 原理 注解的本质一个特殊的接口继承了java.lang.annotation.Annotation 接口。当定义一个注解时Java 编译器会将其转换为一个实现了 Annotation 接口的代理类。 import java.lang.annotation.*;Retention(RetentionPolicy.RUNTIME) Target(ElementType.METHOD) public interface MyAnnotation {String value() default defaultValue;int priority() default 1; }//伪代码 public interface MyAnnotation extends Annotation {String value(); // 对应注解中的 value 属性int priority(); // 对应注解中的 priority 属性 }//验证 Retention(RetentionPolicy.RUNTIME) 可以通过反射机制拿去值public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException, NoSuchMethodException, InvocationTargetException, UnknownHostException {//获取目标类ClassStudent studentClass Student.class;//判断类有没有注解if(studentClass.isAnnotationPresent(MyAnnotation.class)){//拿到代理对象MyAnnotation annotation studentClass.getAnnotation(MyAnnotation.class);System.out.println(valueannotation.value());System.out.println(priotityannotation.priority());}} 注解的限制 虽然注解看起来像普通的接口但它们有一些特殊的限制 不能继承其他接口 注解不能继承其他接口除了隐式的 Annotation 接口。 public interface MyAnnotation extends SomeOtherInterface {} // 错误 不能包含方法体 注解中的方法只能声明不能有实现。 public interface MyAnnotation { String value() { return defaultValue; } // 错误 } 不支持泛型 注解中的方法不能使用泛型。 public interface MyAnnotation { ListString values(); // 正确 ListT values(); // 错误 } ​​​​​ 拓展 java.lang.annotation.Annotation 是所有注解的父接口。它定义了一些通用的方法用于处理注解的元数据。 package java.lang.annotation;/*** The common interface extended by all annotation interfaces. Note that an* interface that manually extends this one does inot/i define* an annotation interface. Also note that this interface does not itself* define an annotation interface.** More information about annotation interfaces can be found in section* {jls 9.6} of citeThe Java Language Specification/cite.** The {link java.lang.reflect.AnnotatedElement} interface discusses* compatibility concerns when evolving an annotation interface from being* non-repeatable to being repeatable.** author Josh Bloch* since 1.5*/ /*** 所有注解接口继承的公共接口。注意手动扩展此接口的接口i不会/i成为注解接口。* 此接口自身也不作为注解接口。* * 更多注解接口的详细信息请参阅《Java语言规范》第{jls 9.6}节。* * 当注解接口从不可重复变为可重复时{link java.lang.reflect.AnnotatedElement}* 接口讨论了相关的兼容性问题。* * 作者Josh Bloch* 自版本1.5*/ public interface Annotation { public interface Annotation {/*** Returns true if the specified object represents an annotation* that is logically equivalent to this one. In other words,* returns true if the specified object is an instance of the same* annotation interface as this instance, all of whose members are equal* to the corresponding member of this annotation, as defined below:* ul* liTwo corresponding primitive typed members whose values are* {code x} and {code y} are considered equal if {code x y},* unless their type is {code float} or {code double}.** liTwo corresponding {code float} members whose values* are {code x} and {code y} are considered equal if* {code Float.valueOf(x).equals(Float.valueOf(y))}.* (Unlike the {code } operator, NaN is considered equal* to itself, and {code 0.0f} unequal to {code -0.0f}.)** liTwo corresponding {code double} members whose values* are {code x} and {code y} are considered equal if* {code Double.valueOf(x).equals(Double.valueOf(y))}.* (Unlike the {code } operator, NaN is considered equal* to itself, and {code 0.0} unequal to {code -0.0}.)** liTwo corresponding {code String}, {code Class}, enum, or* annotation typed members whose values are {code x} and {code y}* are considered equal if {code x.equals(y)}. (Note that this* definition is recursive for annotation typed members.)** liTwo corresponding array typed members {code x} and {code y}* are considered equal if {code Arrays.equals(x, y)}, for the* appropriate overloading of {link java.util.Arrays#equals Arrays.equals}.* /ul** return true if the specified object represents an annotation* that is logically equivalent to this one, otherwise false*/boolean equals(Object obj);/*** Returns the hash code of this annotation.** pThe hash code of an annotation is the sum of the hash codes* of its members (including those with default values).** The hash code of an annotation member is (127 times the hash code* of the member-name as computed by {link String#hashCode()}) XOR* the hash code of the member-value.* The hash code of a member-value depends on its type as defined below:* ul* liThe hash code of a primitive value i{code v}/i is equal to* codeiWrapperType/i.valueOf(iv/i).hashCode()/code, where* i{code WrapperType}/i is the wrapper type corresponding* to the primitive type of i{code v}/i ({link Byte},* {link Character}, {link Double}, {link Float}, {link Integer},* {link Long}, {link Short}, or {link Boolean}).** liThe hash code of a string, enum, class, or annotation member-value* i{code v}/i is computed as by calling* codeiv/i.hashCode()/code. (In the case of annotation* member values, this is a recursive definition.)** liThe hash code of an array member-value is computed by calling* the appropriate overloading of* {link java.util.Arrays#hashCode(long[]) Arrays.hashCode}* on the value. (There is one overloading for each primitive* type, and one for object reference types.)* /ul** return the hash code of this annotation*/int hashCode();/*** Returns a string representation of this annotation. The details* of the representation are implementation-dependent, but the following* may be regarded as typical:* pre* #064;com.example.Name(firstDuke, middleof, lastJava)* /pre** return a string representation of this annotation*/String toString();/*** Returns the annotation interface of this annotation.** apiNote Implementation-dependent classes are used to provide* the implementations of annotations. Therefore, calling {link* Object#getClass getClass} on an annotation will return an* implementation-dependent class. In contrast, this method will* reliably return the annotation interface of the annotation.** return the annotation interface of this annotation* see Enum#getDeclaringClass*/Class? extends Annotation annotationType(); }
http://www.hkea.cn/news/14333375/

相关文章:

  • 衡水电商网站建设深圳营销网站建设公司哪家好
  • 网站建设里面链接打不开炫酷的编程代码
  • 网站开发的在线支付功能用花生壳免费域名做公司网站
  • 北京旗网站制作什么网站能让小孩做算术题
  • 爱站网影视排行榜官方网站作用
  • 服装网站建设网电子商务网站开发开发背景
  • 自己做网站如何月入3k纺织面料做哪个网站好
  • wordpress ftp上传文件手机seo百度点击软件
  • 企业网站硬件方面建设wordpress提取公众号文章
  • 做实体店打折信息网站搜狗站长平台主动提交
  • 网站开发强制使用急速内核建筑品牌网站
  • 企业网站底部百度站长号购买
  • 北京做网站电话的公司购买网站建设需要注意
  • 平面设计公司网站建设费用中国手机网站大全
  • 唐山网站建设求职简历西安景点排名前十
  • 成都企业网站模板建设网站被百度降权了怎么办
  • 汉中网站建设汉中动漫制作专业学什么就业方向
  • 做视频大赛推广的网站python网页版编程
  • 网站首页的head标签内佟年做网站给KK
  • 做中文网站公司提供手机自适应网站制作
  • 邯郸专业网站建设公司网站后台开发技术
  • 360网站怎么做网址链接免费找客源软件
  • 宣传工作网站建设作用个人主页源码
  • 网站建设招标提问什么外贸网站开发客户
  • ppt超链接到网站怎么做怎么做跳转网站 充值登陆
  • 青岛关键词网站排名电子商务网站设计与建设小结
  • 不做网站做百家号建设厅考试成绩查询
  • 传媒免费网站建设做企业网站设
  • 徐州网站的优化网站建设的具体代码
  • 随便编一个公司网站大数据营销的优缺点