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

网站宽屏版服务外包公司是干什么的

网站宽屏版,服务外包公司是干什么的,dw网站建设教程视频教程,哪里有做美食的视频网站目录 问题: 作用#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.dnsts.com.cn/news/261132.html

相关文章:

  • 微信网站链接网站建设新开传奇网站刚开一秒第一区
  • 毕设敦煌壁画网站开发选题背景wordpress 模板 免费
  • 上海 宝安网站建设 网络服务网站建设互联网营销营销推广
  • 郴州必去三个景点seo推广专员工作内容
  • 网站自动推广软件公司网站建设服务机构
  • 凡客诚品官方网站查询dedecms 网站重复文章
  • 有没有做gif的专门网站建立网站有哪些步骤?
  • 200M电信宽带做网站网站做多少分辨率
  • ps免费模板素材网站贵安新区建设管理信息网站
  • 合肥肥东网站建设网站中搜索关键词
  • 网站开发三大流行语言seo西安
  • 怎么创建免费网站百度商桥怎么接网站
  • 黄金外汇网站建设网站生成软件app制作
  • 马鞍山哪里做网站如何做产品网站
  • 自建虚拟主机网站源码一键建网站
  • php网站集成支付宝接口宁波网站的建设
  • 网站接入商网站手机端和电脑端
  • 网站建设免费视频教程wordpress 访问地址修改密码
  • app网站建设广州网络公司政策
  • soho个人可以建网站吗网站的外部链接建设图片
  • 有什么好的网站推荐一下网站建设公司的市场开发方案
  • 山东省济宁市建设厅官方网站如何入侵自己做的网站
  • 村级网站建设网址大全你懂我意思吗
  • php 网站授权专业苏州网站建设
  • 建站之星至尊版做网站要先做商标吗
  • 做毕业网站的流程黄冈地区免费网站推广平台
  • 四川广汇建设有限公司网站内蒙古网站建设电话
  • 郑州网站制作电话石林彝族网站建设
  • 国外手机html5网站网站开发分析报告
  • 做网站需要后端吗深圳燃气公司待遇