Java/SpotBugs,如果在接口中声明“命名静态内部类”,那么它是什么?

Jon*_*her 5 java static-analysis lint findbugs spotbugs

我继承了一个使用 MyBatis 的代码库。SpotBugs 告诉我,SubjectRepositoryQueries could be refactored into a named _static_ inner class.我从未遇到过这个术语,我希望有人能解释一下它到底要求我做得更好。看起来它SubjectRepositoryQueries实际上是命名的(它不是匿名的),并且它已经是静态的。SubjectRepositoryQueries不能声明为私有,因为它位于接口内部。

@Mapper
public interface SubjectRepositoryService {
  @SelectProvider(type = SubjectRepositoryQueries.class, method = "search")
  List<Subject> search(SubjectSearch subjectSearch);

  static final class SubjectRepositoryQueries {
    public String search(final SubjectSearch subjectSearch) {
      ... some string generation
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Mic*_*ael 3

目前尚不清楚具体警告的含义。如果您的唯一目标是删除警告,那么考虑到您的内部类没有实现接口,您可以简单地将其转换为静态方法。

@Mapper
public interface SubjectRepositoryService {
    //...

    static String search(final SubjectSearch subjectSearch) {
        //... some string generation
    }
}
Run Code Online (Sandbox Code Playgroud)