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

运行时类路径中是否需要注释类文件?

淳于凯
2023-03-14

如果用注释对类进行注释,那么为了使用该类,该注释的定义必须在运行时类路径中吗?例如,给定注释

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Retention;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Component {}

我能执行这个程序

@Component
public class Test {
    public static void main(String[] args) {
        System.out.println("It worked!");
    }
}

类路径中没有component.class?(在我的测试中,我可以,但这个行为是由规范定义的吗?)

我这样问是因为有相互矛盾的说法,即使用库中的注释是否会创建对该库的依赖关系。

共有1个答案

郭瀚海
2023-03-14

运行时注释是注释处理器在运行时要处理的元信息。如果在运行时有对注释的访问,那么您肯定会在类路径中添加注释。例如,junit肯定需要类路径中的注释来确定测试方法。

如果没有对注释进行处理,就不需要将其作为类路径。

 类似资料:
  • 我试图弄清楚使用运行时级别保留注释(例如:@javax.inject.named)注释的类在编译时和运行时类路径方面的确切影响。这是我到目前为止的理解: null 如果是这种情况,我是否需要创建一个包装对象(用@javax.inject.named注释)来委托内部的、未注释的对象?是否还有一个在编译时禁用注释处理的选项?参见http://docs.oracle.com/javase/7/docs/

  • 我的目标是将以前使用Spring Boot 1.3开发的Spring Boot应用程序迁移到最新的Spring Boot 1.4版本。该应用程序由几个maven模块组成,其中只有一个包含用SpringBootApplication注释的类。 迁移的一部分是使用WebMvcTest注释来有效地测试控制器,这里我遇到了一个问题。 考虑Spring Boot github页面中的一个示例应用程序<代码>

  • 问题内容: 在注册表中设置类路径以使RMI正常工作是否必要或重要? 问题答案: 与@Rahul的毫无根据的断言相反,确实有必要为RMI注册中心设置CLASSPATH,除非: 您是从目录(也是.class文件的包结构的头)启动注册表的。 您正在使用代码库功能,或者 您正在通过与RMI远程对象相同的JVM中启动注册表,方法是通过 如果您不执行这四件事之一,则在将远程对象绑定到注册表时,将得到一个包装。

  • 问题内容: 我在搞弄JAX- RS,制作了一个应用程序,该应用程序调用产生JSON的REST服务。我尝试了Jersey,一切都很好,但是由于我的应用程序需要使用JDK5进行构建,因此我不得不切换到RESTEasy。我将web.xml更改为以下内容: 因此,我希望每个以/ rest开头的URL都将由RESTEasy处理。我的服务如下: 使用Jersey可以正常工作,http:// localhost

  • 可以通过以下方式创建上下文: null null 或者我使用SpringBoot,有@SpringBootApplication a是添加以下所有内容的方便注释: @Configuration将类标记为应用程序上下文的bean定义的源。@EnableAutoConfiguration告诉Spring Boot根据类路径设置、其他bean和各种属性设置开始添加bean。通常情况下,您会为Spring