`
yahaitt
  • 浏览: 764259 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

告知编译程序如何处理@Retention

阅读更多

告知编译程序如何处理@Retention:

java.lang.annotation.Retention型态可以在您定义Annotation型态时,指示编译程序该如何对待您的自定义Annotation型态。

预定义上编译程序会将Annotation信息留在.class文档中,但不被虚拟机读取,而仅用于编译程序或工具程序运行时提供信息。

java.lang.annotation.RetentionPolicy 有三个枚举类型:CLASS、RUNTIME、SOURCE

只有当Annotation被指示成RUNTIME时,在运行时通过反射机制才能被JVM读取,否则,JVM是读取不到这个Annotation的。

 

java 代码
  1. package com.test;   
  2.   
  3. import java.lang.annotation.Retention;   
  4. import java.lang.annotation.RetentionPolicy;   
  5.   
  6. @Retention(RetentionPolicy.RUNTIME)   
  7. public @interface RetentionTest {   
  8.     String hello() default "hello";   
  9.     String world();   
  10. }   

 

java 代码
  1. package com.test;   
  2.   
  3. public class MyTest {   
  4.     @RetentionTest(hello = "beijing", world = "shanghai")   
  5.     @Deprecated  
  6.     @SuppressWarnings("unchecked")   
  7.     public void output()   
  8.     {   
  9.         System.out.println("output");   
  10.     }   
  11. }   

 

java 代码
  1. package com.test;   
  2.   
  3. import java.lang.annotation.Annotation;   
  4. import java.lang.reflect.Method;   
  5.   
  6. public class ReflectRetentionTest {   
  7.   
  8.     public static void main(String[] args) throws Exception{   
  9.         MyTest mt = new MyTest();   
  10.         Class<mytest></mytest> c = MyTest.class;   
  11.         Method method = c.getMethod("output",new Class[]{});   
  12.         if(method.isAnnotationPresent(RetentionTest.class))   
  13.         {   
  14.             method.invoke(mt, new Object[]{});//output   
  15.                
  16.             RetentionTest  retentionTest = method.getAnnotation(RetentionTest.class);   
  17.                
  18.             System.out.println(retentionTest.hello());//beijing   
  19.             System.out.println(retentionTest.world());//shanghai   
  20.         }   
  21.            
  22.         Annotation[] annotations = method.getAnnotations();   
  23.         for(Annotation annotation: annotations)   
  24.         {   
  25.             System.out.println(annotation.annotationType().getName());   
  26.         }   
  27.         //for循环里输出的结果是com.test.RetentionTest以及java.lang.Deprecated,而没有出来java.lang.SuppressWarnings   
  28.         //因为java.lang.SuppressWarnings的Retention是被设置成RetentionPolicy.SOURCE类型的,所以在运行时是不会被虚拟机读取的。   
  29.     }   
  30. }   

运行第三个程序

分享到:
评论

相关推荐

    14、JavaSE:注解和反射.pdf

    Java注解(Annotation)是自JDK 5.0版本起引入的一种元数据,它为程序提供了附加信息,但并不直接影响程序的运行。注解的主要目的是为了帮助编译器、构建工具、IDE或其他软件工具更好地理解和处理代码。注解与普通的...

    史上最完整java注释教程

    在Java中,注释并不直接影响程序的执行,但它们可以被编译器、IDE和反射API等工具读取并处理。 Java注释的引入源于JSR175,这是一个元数据设施,目的是允许类、接口、字段和方法被标记以表明特定属性。元数据是在...

    Java注解开发

    注解本质上是一种特殊的接口,其主要用途包括但不限于文档生成、编译时检查以及运行时的元数据处理。 ##### 注解的特点: - **元数据**:注解用于添加额外的元数据信息到程序元素上。 - **非功能性**:注解本身并...

    长江学者名单,来自网络来自网络

    长江学者名单,来自网络

    基于COMSOL的有限元仿真模型:单相变压器绕组及铁芯振动形变分析 · 时域仿真

    内容概要:本文介绍了基于COMSOL的单相变压器绕组及铁芯振动形变仿真模型。绕组在漏磁场的洛伦兹力作用下会发生振动并导致位移形变,而铁芯则因磁致伸缩效应产生振动形变。这两种形变都会影响变压器的性能和寿命。通过有限元仿真模型,特别是时域仿真,可以设置观察点并导出随时间变化的磁通、位移、压力和形变曲线,帮助研究人员更好地理解和解决这些问题。 适合人群:从事电力系统设备设计、制造和维护的技术人员,以及对有限元仿真感兴趣的科研人员。 使用场景及目标:①用于研究单相变压器绕组和铁芯的振动形变机理;②为优化变压器设计提供数据支持;③预测和预防变压器可能出现的问题,延长其使用寿命。 其他说明:文中提到的仿真模型不仅可以帮助理解变压器内部的工作机制,还可以为实际工程应用提供有价值的参考。

    Java编程基于面向对象的扑克牌游戏程序设计:多玩家对战逻辑与核心功能实现详解

    内容概要:本文介绍了一个基于Java语言实现的简单扑克牌游戏程序,详细阐述了游戏规则、功能模块设计、核心功能实现以及扩展建议。游戏使用标准52张扑克牌,支持2-4名玩家对战,玩家可出单张、对子、三张或顺子等牌型,牌型大小按三张>顺子>对子>单张排列。功能模块包括扑克牌类(Card)、牌堆管理类(Deck)、玩家类(Player)和游戏主逻辑类(PokerGame)。核心功能涵盖扑克牌的数据结构设计与比较规则、牌堆的初始化与洗牌发牌逻辑、玩家的手牌管理和游戏的回合制流程与胜负判定。; 适合人群:具有Java编程基础的学习者或开发者,尤其是对面向对象编程和游戏开发感兴趣的读者。; 使用场景及目标:①理解面向对象编程思想,掌握类与对象的定义和使用;②学习扑克牌游戏的基本规则和实现逻辑;③掌握Java语言中集合、枚举、接口等特性在实际项目中的应用;④为后续开发更复杂的扑克牌游戏打下基础。; 其他说明:本文提供了完整的代码实现和详细注释,有助于读者快速上手并理解每个部分的功能。同时,文中还给出了多项扩展建议,如增加牌型规则、优化交互界面、实现网络对战和AI对战系统等,鼓励读者在此基础上进行创新和改进。

    cmd-bat-批处理-脚本-findEscapeQuote.zip

    cmd-bat-批处理-脚本-findEscapeQuote.zip

    cmd-bat-批处理-脚本-循环-9.for-f-eol.zip

    cmd-bat-批处理-脚本-循环-9.for-f-eol.zip

    基于灰狼算法的局部阴影遮挡下MPPT实现及仿真分析

    内容概要:本文探讨了基于灰狼算法的MPPT控制策略,旨在解决局部阴影遮挡和光照突变条件下传统MPPT算法难以实现最优跟踪的问题。文中详细介绍了灰狼算法的基本原理及其在光伏系统中的应用,提出了建立光伏系统的数学模型并利用灰狼算法优化输出电压和电流的方法。通过编写灰狼算法程序并在Matlab/Simulink中搭建仿真模型,验证了该策略的有效性和优越性。仿真结果显示,灰狼MPPT控制策略在复杂环境下具有更高的寻优精度和更强的适应性。 适合人群:从事太阳能光伏系统研究的技术人员、科研工作者及高校相关专业师生。 使用场景及目标:适用于需要优化光伏系统能量利用率的研究项目,特别是在存在局部阴影遮挡和光照突变的应用环境中。目标是提高光伏系统的稳定性和效率。 其他说明:未来可以通过进一步优化灰狼算法程序和模型,拓展其在更多类似优化问题中的应用,为太阳能光伏系统的智能化发展提供支持。

    cmd-bat-批处理-脚本-check ad status.zip

    cmd-bat-批处理-脚本-check ad status.zip

    基于多通道卷积神经网络(MCCNN)的变压器故障诊断模型及其MATLAB仿真 多通道卷积神经网络 多通道卷积神经网络MCCNN在变压器故障诊断中的应用

    内容概要:本文介绍了一种基于多通道卷积神经网络(MCCNN)的变压器故障诊断模型的研究与实现。针对传统诊断方法面对变压器内部故障种类繁多且隐蔽性强的问题,提出了利用MCCNN处理多维度振动信号的方法。通过不同大小的卷积核提取局部和全局特征,在不增加模型复杂度的情况下提高了故障识别能力。文中详细描述了MCCNN模型的构建步骤,包括数据预处理、卷积层和池化层的设计,以及MATLAB平台上的具体实现。实验结果显示,MCCNN模型在变压器故障诊断方面表现出更高的准确率和更好的泛化能力。 适合人群:从事电力系统维护、故障诊断领域的工程师和技术研究人员。 使用场景及目标:适用于需要提升变压器故障诊断精度和效率的实际应用场景,如电力公司、变电站等。目标是通过先进的机器学习技术改进现有诊断手段,减少误判并提高系统的可靠性。 其他说明:文章提供了详细的理论背景和技术细节,有助于读者深入理解MCCNN的工作机制及其在特定任务中的优势。同时,附带的变压器振动信号数据集为后续研究提供了宝贵的数据支持。

    COMSOL多物理场仿真在水力压裂传热-应力-渗流-损伤模型中的应用研究

    内容概要:本文详细探讨了利用COMSOL多物理场仿真软件进行水力压裂传热-应力-渗流-损伤模型的研究。文章介绍了水力压裂过程中涉及的多个物理现象及其相互作用,如流体流动、岩层变形、温度变化和岩层破坏。通过具体的数学公式展示了不同物理场之间的耦合关系,如应力计算、热量传递、压力分布和损伤演化。此外,文章还讨论了模型构建的方法以及仿真结果的应用价值,强调了通过优化流体注入速率等参数来提高压裂效率的实际意义。 适合人群:从事水力压裂技术研究的专业人士、地质工程研究人员、能源开发领域的工程师和技术人员。 使用场景及目标:适用于希望深入了解水力压裂多物理场耦合机制的研究人员,旨在通过仿真分析优化水力压裂过程,提高压裂效率并降低成本。 阅读建议:读者应具备一定的物理学和工程学背景,特别是对多物理场耦合有基本了解。建议结合实际案例进行学习,以便更好地理解和应用文中提到的技术和方法。

    QtC++实现多功能节点式图形编辑器:树形结构、缩放、接口连接与图片导出 图片导出

    内容概要:本文详细介绍了如何使用Qt C++实现一个多功能的节点式图形编辑器。该编辑器具有左侧树形结构,支持面板缩放、节点间的输入输出接口连接以及图片导出功能。文章首先阐述了编辑器的基本架构和特性,接着逐步讲解了节点的添加与操作方法,包括通过右键菜单添加节点、鼠标选择并删除节点或线条。然后重点讨论了节点之间的接口连接机制,允许用户通过拖拽方式进行灵活的图形构建。最后,文章提到了图片导出功能,使用户能够保存编辑成果。此外,文中还简要提及了技术实现的关键点和技术细节,提供了部分代码片段供参考。 适合人群:对Qt C++有一定了解,希望深入学习图形编辑器开发的技术爱好者和开发者。 使用场景及目标:适用于需要开发复杂图形界面的应用程序,如数据流图绘制工具、流程设计器等。目标是掌握Qt C++在图形编辑器开发中的具体应用,提升编程技能。 其他说明:文中提供的源码已在特定版本(Qt5.6.1_MinGW、Qt5.13.1_MinGW)下验证通过,其他版本可能需要适当调整。

    Abaqus三点弯裂纹扩展模拟:骨料占比、界面强度对混凝土断裂性能的影响

    内容概要:本文深入探讨了利用Abaqus软件进行三点弯裂纹扩展的模拟研究,重点分析了骨料占比、骨料砂浆界面强度对混凝土断裂性能的影响,以及微裂缝的作用。同时,还讨论了混凝土水化热和浇筑温度场、应力场的相互影响。通过具体案例和技术细节的解析,展示了如何通过内聚力单元(COHESIVE)模拟混凝土材料内部的应力、应变行为,揭示了不同因素对混凝土性能的具体影响。 适合人群:从事土木工程、材料科学研究的专业人士,尤其是对混凝土性能有深入研究需求的工程师和科研人员。 使用场景及目标:适用于需要评估混凝土结构安全性和耐久性的项目,旨在优化工程设计并提高混凝土的使用寿命。通过对裂纹扩展机制的理解,可以更好地预防和解决实际工程中的问题。 阅读建议:读者应在已有一定的混凝土材料基础知识和有限元分析经验的基础上,结合实际工程案例进行理解和应用。文中涉及的技术细节和难点部分,建议反复研读并结合实际操作加深理解。

    电力电子变换器仿真:基于MatlabSimulink的三相全桥整流与闭环Buck电路模型 PI控制

    内容概要:本文详细介绍了两级式电力电子变换器的仿真模型及其构建方法。前级采用三相全桥整流电路,用于将380V交流电转换为直流电;后级则为闭环Buck电路,利用PI控制实现10V直流电的稳定输出。整个模型在MATLAB/Simulink环境中搭建,通过仿真验证了系统的性能和稳定性。文中不仅展示了具体的电路设计步骤,还提供了详细的仿真参数设置和结果分析。 适合人群:从事电力电子技术研究的专业人士、高校相关专业师生、对电力电子变换器感兴趣的工程技术人员。 使用场景及目标:适用于需要理解和掌握两级式电力电子变换器工作原理和技术细节的人群。通过本模型的学习,能够深入了解三相全桥整流和闭环Buck电路的设计思路,掌握MATLAB/Simulink仿真工具的应用技巧。 其他说明:该模型不仅有助于理论研究,还能为实际工程项目提供有价值的参考。通过对仿真结果的分析,可以优化电路设计,提高系统的效率和可靠性。

    cmd-bat-批处理-脚本-splitCommand.zip

    cmd-bat-批处理-脚本-splitCommand.zip

    cmd脚本-bat批处理-8.DecimalConversion.zip

    cmd脚本-bat批处理-8.DecimalConversion.zip

    电力系统仿真中变压器励磁涌流与环流电流的Python建模及其实验研究 · 变压器 指南

    内容概要:本文详细介绍了如何使用Python进行变压器励磁涌流的仿真复现,重点探讨了磁饱和效应对电流波形的影响。首先构建了一个非线性电感模型,利用欧拉法求解电路微分方程,展示了励磁涌流的典型特征——尖峰衰减波形。接着引入了两台变压器并列运行的情况,讨论了因参数差异导致的环流问题及其潜在危害。最后加入了磁滞效应,使仿真更加贴近实际情况。文中还提到了仿真过程中需要注意的关键参数调整方法。 适合人群:从事电力系统仿真研究的技术人员、高校相关专业学生、对电力电子感兴趣的开发者。 使用场景及目标:适用于需要深入理解变压器励磁涌流特性的场合,如电力设备保护设计、故障诊断等领域。目标是帮助读者掌握励磁涌流产生的机理,提高对电力系统的认知水平。 阅读建议:本文提供了完整的Python代码示例,建议读者跟随代码逐步实践,同时关注关键参数的选择和调整,以便更好地理解和应用所学知识。

    如何快速判断目标函数的凸性?如何判断一个矩阵是正定的?函数组合的凸性传递规律是什么?函数凸性总结.pdf

    如何快速判断目标函数的凸性?如何判断一个矩阵是正定的?函数组合的凸性传递规律是什么?函数凸性总结

    api-ms-win-core-winrt-l1-1-0.dll

    win7系统下,运行qt程序,提示缺少api-ms-win-core-winrt-l1-1-0.dll 的解决方法,对应的dll复制到程序根目录即可

Global site tag (gtag.js) - Google Analytics