[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/