Grails版本:2.3.4
Java版本:1.7.0_79
我正在使用最新版本的Grails中的独立应用程序,通过演示开发AWS S3上传器。它正在运行,我现在一直在尝试将它实现到我的旧Grails主应用程序中。
关于这行代码,我在服务器启动时遇到错误:
import grails.validation.Validateable
import org.springframework.web.multipart.MultipartFile
abstract class FeaturedImageCommand implements Validateable {
MultipartFile featuredImageFile
Long id
Long eventId
Integer version
static constraints = {
id nullable: false
version nullable: false
eventId nullable:false
featuredImageFile validator: { val, obj ->
if ( val == null ) {
return false
}
if ( val.empty ) {
return false
}
['jpeg', 'jpg', 'png'].any { extension -> // <1>
val.originalFilename?.toLowerCase()?.endsWith(extension)
}
}
}
}
错误如下:
在非anstract类中不能有抽象方法。必须将类'FeaturedImageCommand'声明为abstract或者必须实现'java.lang.Class.annotationType()'方法。
我假设我的java和grails版本导致了这个问题,但我真的希望有一种方法可以解决这个问题吗?
谢谢。
答案 0 :(得分:0)
好Validateable
是注释类型,annotationType()
方法来自Annotation
接口,所有@interface
类型都隐式继承。
(你的代码是......奇怪的。你为什么要&#34;实现&#34;作为一个类的注释?我的理解是你不能使用定义为子类的类@interface
作为注释......)
如果您尝试使用类型层次结构声明注释,则Java语法不允许这样做。 (JLS明确说明了这一点。)
如果您(真的)想要一个implements
和@interface
的课程,那么您将需要实施该方法。 (而且我不知道你之前没有这样做过。Validateable
是我在Grepcode网站上看到的所有版本中的@interface
。)