java - 发现不兼容的类型 : required: default enums in annotations

标签 java spring ant annotations aop

[javac] C:\ws\galileo\test\Cacheable.java:13: incompatible types
[javac] found   : com.io.CacheType
[javac] required: com.io.CacheType
[javac]  public CacheType id() default CacheType.COMMON;

我真的不明白这个。 我有一个项目,我正在为 Spring 自定义构建缓存拦截器。它只是通过缓存名称查看指向 EhCache 并使用 aop-autoproxy 加载 CacheableAspect(这是我的缓存拦截器)。现在,当我在注释中使用默认值时,ANT 给出了下面的编译器错误。我尝试更新到最新的 JDK(我现在使用 1.6 16)并在 ant 脚本中设置源/目标级别,但没有成功。当我删除默认值并强制所有区域指定一个值时,它会在 ant 中正常编译。

它总是在 Eclipse 中工作,我的单元测试使用以前的默认值完美运行。

什么给了?我尝试构建一个项目(没有 Spring ),它简单地用 ant 呼应配置,并在 ant 中编译(和在 eclipse 中)。

这告诉我可能是 Spring 自动代理?但是为什么编译器不给我生成的类型名称呢? GRRR。有什么想法吗?

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.io.CacheType;

@Retention(RetentionPolicy.RUNTIME) 
@Target({ElementType.METHOD}) 
public @interface Cacheable {
 public CacheType value() default Cachetype.COMMON;
}

public enum CacheType {

 COMMON("common"),
 PERSISTENT("persistent";

 private String cache;

 CacheType(String cache) {
  this.cache = cache;
 }

 public String cache() {
  return this.cache;
 }
}

最佳答案

在 JDK 6u25 中仍然存在,但是将包添加到默认值就可以了:

CacheType value() default com.io.CacheType.COMMON;

关于java - 发现不兼容的类型 : required: default enums in annotations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1425088/

相关文章:

java - 获取对象中的 SUM 值

java - 需要使用 Junit 测试 MailService

java - 使用 Postgres 获取 "Duplicate key value violates unique constraint"

Spring 卡夫卡 : Poll for new messages instead of being notified using `onMessage`

javascript - 对 spring @ResourceMapping 方法进行 react ,未使用相同的请求参数调用

java - Ant:无法创建任务或输入 fx:deploy

java - 如何测量c :import tag所花费的时间

java - Gradle,包含我的构建目录中的所有 json 文件

java - 在 Ant 构建中引用外部库

java - Ant 与 hudson