【发布时间】:2011-12-18 17:37:44
【问题描述】:
我花了一天的大部分时间试图理解为什么 Java 不能编译带有泛型类型参数的简单泛型方法,但只有在导入封闭类时才可以。基本上,我将 Spring 上下文操作公开为一个名为 SpringApplicationContext 的类中的静态方法:
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 进行编译时,也会发生同样的错误。任何提示都将受到欢迎。
【问题讨论】:
-
这门课是公开的吗?