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

网站建设费入如保入账买卖交易网

网站建设费入如保入账,买卖交易网,wordpress接入api,重庆购物网站建设基本介绍三种基本注解OverrideDeprecatedSuppressWarnings四种元注解RetentionTargetDocumentedInherited一、基本介绍1.概述java注解#xff08;Annotation#xff09;[ˌ nəˈ teɪʃn]#xff0c;又称java标注#xff0c;也被称为元数据#xff08;关于数据的数据OverrideDeprecatedSuppressWarnings四种元注解RetentionTargetDocumentedInherited一、基本介绍1.概述java注解Annotation[ˌ ænəˈ teɪʃn]又称java标注也被称为元数据关于数据的数据描述数据的数据)Metadata[ˈ metədeɪtə]可用于修饰或者解释包、类、方法、属性、构造器局部变量等数据信息。java注解和注释一样不会影响程序逻辑但注解可以被编译或运行相当于嵌入在代码中的补充信息。在javaSE中注解的功能比较单一例如标记过时的功能忽略警告等等。但注解在javaEE中占据了更重要的角色尤其是在使用框架时例如用来配置应用程序的任何切面代替javaEE旧版中所残留的冗余代码和XML配置等等。2.使用使用Annotation时要在它前面增加“”符号并把该注解当作一个修饰符来使用。以修饰它支持的程序元素。二、3种基本注解 0.总览 : Override - 检查该方法是否是重写方法。如果发现其父类或者是引用的接口中并没有该方法时会报编译错误。Deprecated - 标记某个程序元素类或者方法等已过时。如果使用该方法会报编译警告。SuppressWarnings - 指示编译器去忽略注解中声明的警告。1.“Override”①含义Override就是重写的意思如下 : ②源码Override最大的价值在于它的判断功能。通过Ctrl b/B 可以查看Override源码如下 : /** Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.*********************/package java.lang;import java.lang.annotation.*;/*** Indicates that a method declaration is intended to override a* method declaration in a supertype. If a method is annotated with* this annotation type compilers are required to generate an error* message unless at least one of the following conditions hold:** ulli* The method does override or implement a method declared in a* supertype.* /lili* The method has a signature that is override-equivalent to that of* any public method declared in {linkplain Object}.* /li/ul** author Peter von der Aheacute;* author Joshua Bloch* jls 8.4.8 Inheritance, Overriding, and Hiding* jls 9.4.1 Inheritance and Overriding* jls 9.6.4.4 Override* since 1.5*/ Target(ElementType.METHOD) Retention(RetentionPolicy.SOURCE) public interface Override { }其实Override源码中最重要的无非最后两行。“interface”表示Override是一个注解类而不是接口。“Override”只能修饰方法不能修饰其他程序元素比如类包属性等。这一点其实源码中也有体现——Override源码中的“Target(ElementType.METHOD)”明确指出了修饰的元素类型是METHOD方法。PS : “Target”是用于修饰注解的注解我们称之为“元注解”。2.“Deprecated”①含义Deprecated就是不赞成的意思如下 : ②源码“Deprecated”可以标记过时的程序元素。仍然通过Ctrl b/B 快捷键追溯一下Deprecated的源码如下 : (这次仅截取关键部分package java.lang;import java.lang.annotation.*; import static java.lang.annotation.ElementType.*;Documented Retention(RetentionPolicy.RUNTIME) Target(value{CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, MODULE, PARAMETER, TYPE}) public interface Deprecated {String since() default ;boolean forRemoval() default false; } 同样“interface”表示Deprecated是一个注解类。而“Target”元注解中也标注出了Deprecated可以修饰的数据元素从左往右依次为 : {构造器属性局部变量方法包模块参数类型(即类}。③使用“Deprecated”修饰的程序元素并非无法使用只是不建议使用。来举个栗子。演示 : package advanced.Annotation;/*** author : Cyan_RA9* version : 5.0*/ public class Deprecated_ {Deprecatedpublic void f() {System.out.println(这方法没啥屁用不建议使用。你非要用当我没说。。。);} }class Test {public static void main(String[] args) {Deprecated_ deprecated_ new Deprecated_();deprecated_.f();} }运行结果 : 其实当你在调用Deprecated注解修饰的方法时IDEA就会给出提示如下图所示 : 可以明显看到被“Deprecated”注解修饰的f() 方法是被删除线“ ”标注的。④补充啥时候用“Deprecated”比较多比如当JDK进行版本更迭的时候新版本的JDK对旧版本的某些类或者某些方法进行了更新可能会定义新的类型这时候就会在旧版本的对应类型或者对应方法前打上Deprecated标注提醒java人们这是旧的啦建议你用新的捏。3.“SuppressWarnings” : ①含义SuppressWarnings就是抑制警告禁止警告的意思如下 : Warnings小学词汇②格式“SuppressWarnings”的使用与前面两个注解略有出入。使用格式如下 : SuppressWarnings(explanation1, explanation2, explanation3, ......) //双引号中的说明信息不同达到的抑制警告效果便不同。③属性说明汇总“SuppressWarnings”中常见的属性说明有 : all抑制所有警告boxing抑制与“封装/拆装”相关的警告cast抑制与强转类型相关的警告dep-ann抑制与淘汰注释相关的警告deprecation抑制与淘汰相关的警告fallthrough抑制与switch陈述式中遗漏break相关的警告finally抑制与未传回finally区块相关的警告hiding抑制与隐藏变数的区域变数相关的警告incomplete-switch抑制与switch陈述式(enum case)中遗漏项目相关的警告javadoc抑制与javadoc相关的警告nls抑制与非nls字串文字相关的警告resource抑制与使用Closeable类型的资源相关的警告null抑制与空值分析相关的警告rawtypes抑制与使用raw类型相关的警告泛型)restriction抑制与使用不建议或禁止参照相关的警告serial抑制与可序列化的类别遗漏serialVersionUID栏位相关的警告static-access抑制与静态存取不正确相关的警告static-method抑制与可能宣告为static的方法相关的警告super抑制与置换方法相关但不含super呼叫的警告synthetic-access抑制与内部类别的存取未最佳化相关的警告sync-override抑制因置换同步方法而遗漏同步化的警告unchecked抑制与未检查的作业相关的警告unqualified-field-access抑制与栏位存取不合格相关的警告unused抑制与未用的程式码和停用的程式码相关的警告变量未使用部分属性演示 : package advanced.Annotation;import java.util.ArrayList; import java.util.List;/*** author : Cyan_RA9* version : 5.0*/SuppressWarnings({}) public class SuppressWarnings_ {public static void main(String[] args) {List list new ArrayList();list.add();list.add(1);list.add(1);int i;System.out.println(list.get(2));} } 警告信息如下图所示 : 这时候可以通过在注解“SuppressWarnings”中分别添加rawtypes, unchecked, unused属性说明来去除警告信息。如下图所示 : 添加属性说明后⚠全部消失了如下图所示 : ⑤作用域关于SuppressWarnings注解的作用域 : 取决于该注解的定义位置。eg : 当它放在main方法前时抑制警告的范围就是main函数当它定义在类上作用域就是整个类当然也可以在固定的警告语句上面使用SuppressWarnings注解通过传入指定的属性说明实现精准的消除警告。⑥源码通过Ctrl b/B快捷键快速追溯到SuppressWarnings注解类的源码源码如下 : 仅截取关键部分package java.lang;import java.lang.annotation.*; import static java.lang.annotation.ElementType.*;Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, MODULE}) Retention(RetentionPolicy.SOURCE) public interface SuppressWarnings {String[] value(); }同样的。interface元注解表明SuppressWarnings是一个注解类。而“Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, MODULE})”表明了SuppressWarnings注解的使用范围从左往后依次是”{类型类属性方法参数构造器局部变量模块}“。三、4种元注解0.总览 : 在Java中将“修饰注解的注解”称为元注解。元注解使用并不多本身作用也没多大了解即可。可以看懂源码就足够了。Retention - 标识这个注解怎么保存是只在代码中还是编入class文件中或者是在运行时可以通过反射访问保存时间。Documented - 标记这些注解是否包含在javadoc用户文档中。Target - 标记这个注解应该是哪种 Java 成员可以作用于哪些程序元素。Inherited - 标记这个注解是继承于哪个注解类(默认 注解并没有继承于任何子类)1.“Retention”①含义Retention就是保持保留的意思如下图所示 : ②使用“Retention”只能用于修饰一个注解定义用于指定该注解可以保留多长时间Retention元注解中包含一个RetentionPolicy类型的成员变量使用Retention元注解时必须为该成员变量指定值。RetentionPolicy成员变量的三种值 : RetentionPolicy.SOURCE编译器使用后直接丢弃这种策略的注解RetentionPolicy.CLASS编译器将把注解记录在class文件中当运行程序时jvm不会保留注解这是成员变量的默认值RetentionPolicy.RUNTIME编译器将把注解记录在class文件中当运行程序时jvm会保留注解程序可以通过反射获取该注解。③示意图三种成员变量值的效果如下 : 演示 : 以Override的源码为例如下仅截取关键部分package java.lang;import java.lang.annotation.*;Target(ElementType.METHOD) Retention(RetentionPolicy.SOURCE) public interface Override { }注意看“Retention(RetentionPolicy.SOURCE)”中RetentionPolicy类枚举常量是SOURCE这就表示“Override”注解生效的范围仅仅在.java的源文件中不会在.class文件中生效也不会在程序运行时被jvm读取。2.Target : ①含义Target就是目标的意思如下图所示 : ②使用”Target“元注解可以指明当前注解可以作用于哪些程序元素。之前的三大基本注解中均演示过”Target“元注解。如下 : ③源码Target元注解源码如下仅截取了重要部分)package java.lang.annotation;Documented Retention(RetentionPolicy.RUNTIME) Target(ElementType.ANNOTATION_TYPE) public interface Target {ElementType[] value(); }可以看到Target底层是一个ElementType类型的数组。而通过Ctrl b/B追溯源码我们可以看到ElementType本质上是一个枚举类。如下 : package java.lang.annotation;public enum ElementType {/** Class, interface (including annotation interface), enum, or record* declaration */TYPE,/** Field declaration (includes enum constants) */FIELD,/** Method declaration */METHOD,/** Formal parameter declaration */PARAMETER,/** Constructor declaration */CONSTRUCTOR,/** Local variable declaration */LOCAL_VARIABLE,/** Annotation interface declaration (Formerly known as an annotation type.) */ANNOTATION_TYPE,/** Package declaration */PACKAGE,/*** Type parameter declaration** since 1.8*/TYPE_PARAMETER,/*** Use of a type** since 1.8*/TYPE_USE,/*** Module declaration.** since 9*/MODULE,/*** Record component** jls 8.10.3 Record Members* jls 9.7.4 Where Annotations May Appear** since 16*/RECORD_COMPONENT; } ElementType枚举类中的这些枚举常量其实就是我们说的”程序元素“。即注解可作用于的程序成分。3.”Documented“ : ①含义Documented就是登记在案文件化的意思如下图所示 : ②使用“Documented”元注解修饰的注解类会在javadoc文件中显式地呈现。演示 : 先定义一个注解类Demo并在该注解类中使用Documented元注解修饰。如下 : package advanced.Annotation;import java.lang.annotation.*;/*** author : Cyan_RA9* version : 2.0*/ Documented Retention(RetentionPolicy.SOURCE) Target(ElementType.METHOD) public interface Demo {//自定义一个注解类。 }然后在定义一个测试类Test_EX并在测试类中定义两个方法用自定义的注解”Demo“去修饰方法。如下 : package advanced.Annotation.test;import advanced.Annotation.Demo;/*** author : Cyan_RA9* version : 1.0*/ class Test_EX {Demopublic void greet() {System.out.println(Hello!);}Demopublic void eat() {System.out.println(美汁儿美汁儿~);} }然后通过IDEA自带的生成javadoc的功能生成该测试类的javadoc文件如下GIF图所示 : 可以看到greet方法和eat方法的”Demo“都保留在了生成的javadoc文件中。4.”Inherited“ ①含义Inherited就是继承的意思如下所示 : ②使用如果每个类使用了注解而这种注解恰好被”Inherited“元注解修饰那么该类的子类同样会自动拥有父类的注解。System.out.println(END-----------------------------------------------);
http://www.hkea.cn/news/14499920/

相关文章:

  • 上海网站的优化公司wordpress logo设置
  • 公共建设工程中心网站中国有没有开源社区
  • 网站建设工作会议.购物商城类网站备案
  • 上海建设工程安全监理网站重庆智能网站建设
  • 网站建设源代码交付网站开发和游戏开发的区别
  • 网站收录工具培训班网站建设
  • 网站建设课程报告自定义网站建设团队
  • 淘宝网站代理怎么做wordpress 中文 相册插件
  • 久治县网站建设公司电影宣传类网页界面设计
  • 惠州网站策划建设政务网站建设目的_意义
  • 兰州网站定制公司中国建设银行网站 个人
  • 环保业网站建设的策划子网站域名ip地址查询
  • 百度收录正常网站流量下降荆州网络推广
  • 网站开发实习过程淘宝指数查询
  • 网站建设开发公司有哪些ps做游戏下载网站有哪些
  • 酒店网站设计方案wordpress slug
  • 为个人网站做微信服务号网站设计的内容以及步骤
  • 网站建设与网页设计专业的wordpress翻译升级失败
  • 网站建设昆山花桥建筑资料管理规程
  • 非交互式网站可以做商城吗社区团购卖货小程序
  • 酒店品牌设计网站建设有什么网站学做标书的
  • 白山网站seo互联网彩票网站开发
  • 想做一个公司的网站去哪可以做做网站asp
  • 宁波网站搜索引擎优化新开传奇网站刚开
  • 网站广告怎么赚钱上虞建设局网站
  • 昆明高端网站建设沙洋县住房和城乡建设局网站
  • 怎么兼职做网站wordpress arduino
  • 海纳企业网站建设模板织梦网站做瀑布流方便
  • 备案时的网站名称wordpress无法导入xml
  • 外贸网站建设专业定制wordpress抽奖插件