有些事情真的很奇怪。我在注释值中使用静态最终字符串。
class Constants {
static final String myConstant = "ting tong"
}
class Service {
@CacheEvict(cacheNames = Constants.myConstant)
void doSomethingNice() {
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我就是无法编译它。
这是错误消息
属性“myConstant”应具有类型“java.lang.String”;但在 @org.springframework.cache.annotation.CacheEvict 中发现类型“java.lang.Object”
预期“Constants.getMyConstant()”是 @org.springframework.cache.annotation.CacheEvict 中 java.lang.String 类型的内联常量
可能是什么问题?这在 Java 中完美运行
一般来说,将常量保存在接口下而不是类下是一个很好的做法。
interface Constants {
public static final String myConstant = "ting tong"
}
Run Code Online (Sandbox Code Playgroud)
另一个好的做法是将常量定义为static final而不仅仅是 Final,因为为每个常量仅创建 1 个实例会更有效。
| 归档时间: |
|
| 查看次数: |
3837 次 |
| 最近记录: |