当前位置: 首页 > 知识库问答 >
问题:

在Java中,如何通过编程确定源代码中是否存在“@Override”注释?

云俊美
2023-03-14

如何通过编程确定Java源代码中是否存在@Override注释?我尝试过使用方法isAnnotationPresent

public class A
  {
  int a = 1 ;
  @Override
  public String toString()
    { return "attribute a = " + a ; }
  }

public class B extends A
  {
  int b = 2 ;
  @Override
  public String toString ()
    { return super.toString() + ", " + "attribute b = " + b ; }
  }

import java.lang.reflect.Method ;
import java.lang.annotation.Annotation ;
public class Main
  {
  public static void main ( String [] args )
    {
    A a = new A() ;
    B b = new B() ;
    System.out.println ( a.toString() ) ;
    System.out.println ( b.toString() ) ;

    Class c = b.getClass() ;
    Method m = null ;
    try
      { m = c.getMethod("toString") ; }
    catch ( Exception e )
      { System.exit(0) ; }
    System.out.println ( "b's toString method is " + m ) ;    

    boolean bOverrides = m.isAnnotationPresent(Override.class) ;
    System.out.println ( "bOverrides = " + bOverrides ) ;
    }
  }

当然,类B的源代码中的@Override注释可以省略,我想知道Java源代码中是否存在该注释。请注意,main的输出是:

bOverrides = false

共有1个答案

翁宜年
2023-03-14

根据@Overide的文档,你不能。保留策略是SOURCE,而不是RUNtime,这意味着注释在运行时不存在。

 类似资料:
  • 问题内容: 我找到了许多参考资料,它们解释了如何使用该类以编程方式编译Java 类: 但是,我想知道是否有一个开放源代码库,可以让我编译以编程方式生成的源代码(因此不涉及src文件)并在输出流中生成一些字节代码(而不在文件系统中生成类文件) )。 例如,我正在寻找能够写这样的东西: 谢谢你的帮助。 问题答案: 首先,请看JavaCompiler API 。基本上: 在字符串中创建Java类。 将字

  • 问题内容: 好吧,标题是不言而喻的。我在编译有很多注释行的项目时想知道这一点。这有点愚蠢,因为jar文件不会增加太多(某些字节),但是我很好奇这是否会影响带有大量代码和注释的程序。 谢谢 问题答案: 它不会影响执行或性能(除非您注释了错误的语句:-) 但这 绝对 会影响可读性。没有理由(在生产中)使用大量注释掉的代码,版本控制是必经之路 另请参阅 此问题。 问题结束。

  • 问题内容: 在我的代码中,仅当它在JUnit测试中运行时,才需要进行某些修复。如何确定代码是否在JUnit测试中运行?是否有类似JUnit.isRunning()== true的东西? 问题答案: 如果您要以编程方式确定要运行哪个“配置文件”,则可能是一个好主意。考虑使用Spring Profiles进行配置。在集成测试中,您可能需要针对其他数据库进行测试。 这是经过测试的有效代码

  • 问题内容: 由于ResultSet包含从动态SQL返回的数据,是否有任何方法可以确定ResultSet是否包含特定的列名?例如,如果我运行但Column_ABC确实不存在,它将抛出异常。如何测试ResultSet是否可以从名为“ Column_ABC”的列中获取数据? 问题答案: 使用该类。 我不明白的是为什么会需要此功能。正在执行的查询或存储过程应具有已知结果。查询的列应该是已知的。需要这样的功

  • 问题内容: 我有一个需要用户输入密码的应用程序。 我想要做的是从控制台读取密码(如果操作系统支持unix)或显示JOptionPane并要求用户输入密码(如果操作系统支持图形界面(例如Windows))。 有人可能会争辩说,在上述两种情况下控制台始终可用,因此控制台输入就足够了。但是问题是,如果Java应用程序开始使用javaw.exe,则控制台不可用。因此,我需要一种方法来确定我是否可以做任何一

  • 问题内容: 在开发具有许多存储过程的应用程序时,是否应该将它们存储在某种源版本控制系统中(例如源安全,TFS,SVN)?如果是这样,为什么?是否有使用SQL Server Management Studio进行操作的便捷前端方法? 问题答案: 是的。所有代码都应存储在源代码管理中。 简而言之,代码就是代码,并且会发生错误。能够回头看看随着时间的推移发生了什么变化并能够返回到那些变化,这是很好的。