gpt4 book ai didi

java - Java 编译器找不到带有类型参数的泛型方法

转载 作者:行者123 更新时间:2023-11-29 09:17:29 25 4
gpt4 key购买 nike

我花了一天的大部分时间试图理解为什么 Java 不能编译带有泛型类型参数的简单泛型方法,而只能在导入封闭类时编译。基本上,我在名为 SpringApplicationContext 的类中将 Spring 上下文操作公开为静态方法:

public static <T> List<T> listBeansOfType(Class<T> type)
{
return new ArrayList<T>(context.getBeansOfType(type).values());
}

当我从同一个包中的单元测试中调用它时,它起作用了。这是测试调用:

 List<DomainRepo> repos =
SpringApplicationContext.listBeansOfType(DomainRepo.class);

但是,当我从另一个包中的代码调用它时,完全相同的代码失败了。编译器说它找不到符号 listBeansOfType(java.lang.Class)。我已经导入了类,但还没有对方法进行静态导入。

更奇怪的是,当我在一周前编写这段代码时,它就可以运行了。从那时起,我不得不在完成发布过程时将其全部搁置一旁。当我使用 java 1.6 使用 maven 或 Eclipse 进行编译时,也会出现同样的错误。任何提示都将非常受欢迎。

最佳答案

确保您拥有所有需要的 Maven 依赖项。如果您的 Junit 测试有效,但 mvn 编译失败,则依赖项可能包含在范围测试中。

    <dependency>
<groupId>group-a</groupId>
<artifactId>artifact-b</artifactId>
<version>1.0</version>
<scope>TEST</scope> <!-- would explain why you can run your code as junit -->
</dependency>

检查“上下文”的类型以及方法 getBeansOfType() 的定义位置。它们可能作为 mvn 依赖项而丢失。

关于java - Java 编译器找不到带有类型参数的泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8553475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com