英文:
Trying to use default modifier (requires java8+) in an annotated interface yields an error
问题
I am a beginner using spring, I am trying to use default
modifier (requires java8+) in an annotated interface. but I am getting an error default modifier is not allowed here
does anyone familiar with this issue ? is something to do with spring version or with spring in general ?
I am using springBootVersion=2.1.16.RELEASE
Edit:
I cannot remove the annotation because more annotations involved
@//other annotations
@Documented
public @interface Foo {
public default String fooName() {
return this.getClass().getName();
}
}
java: modifier default not allowed here
英文:
I am a beginner using spring, I am trying to use default
modifier (requires java8+) in an annotated interface. but I am getting an error default modifier is not aloud here
does anyone familiar with this issue ? is something todo with spring version or with spring in general ?
I am using springBootVersion=2.1.16.RELEASE
Edit:
I cannot remove the annotation because more annotations involved
@//other annotations
@Documented
public @interface Foo {
public default String fooName() {
return this.getClass().getName();
}
}
> java: modifier default not allowed here
答案1
得分: 1
默认方法仅适用于接口。此功能作为Java 8版本的一部分引入。
您在尝试为注解添加默认方法,但是注解不支持默认方法。因此,您会收到错误。
理想情况下,Java中的注解用于为特定类、方法或文件传递元数据。因此,在正常情况下,您的注解不应包含具有方法体的具体方法。
如果您尝试创建一个带有默认方法的接口,请删除@
符号。
public interface Foo {
public default String fooName() {
return "foo";
}
}
或者,如果您要创建一个注解,则不应该是默认方法,请删除默认关键字和方法体。
public @interface Foo {
public String fooName();
}
英文:
The default method is applicable only for the interface. This feature was introduced as part of Java 8 release.
Here you are trying to add default method to annotations, but the default method is not supported for annotation. Due to this, you are getting error.
Ideally, annotations are used in java to pass the meta-data for a particular class, method or files. So in a normal scenario, your annotation should not contain the concrete method with the body.
If you are trying to create an interface with a default method than remove the @
.
public interface Foo {
public default String fooName() {
return "foo";
}
}
Or if you are trying to create an annotation then it should not be default method and remove default keyword and the method body.
public @interface Foo {
public String fooName();
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论