Grails:在非抽象类ERROR中不能有抽象方法

时间:2017-04-13 13:38:33

标签: java validation class grails abstract

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版本导致了这个问题,但我真的希望有一种方法可以解决这个问题吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

Validateable是注释类型,annotationType()方法来自Annotation接口,所有@interface类型都隐式继承。

(你的代码是......奇怪的。你为什么要&#34;实现&#34;作为一个类的注释?我的理解是你不能使用定义为子类的类@interface作为注释......)

  • 如果您尝试使用类型层次结构声明注释,则Java语法不允许这样做。 (JLS明确说明了这一点。)

  • 如果您(真的)想要一个implements@interface的课程,那么您将需要实施该方法。 (而且我不知道你之前没有这样做过。Validateable是我在Grepcode网站上看到的所有版本中的@interface。)