静态关键字和抽象关键字可以在java中一起使用吗?

静态关键字和抽象关键字可以在java中一起使用吗?,java,inner-classes,Java,Inner Classes,据我所知,静态和最终组合可以一起使用,但java中不允许静态和抽象或最终和抽象组合。但我看到的一些代码如下所示 public class Enclosing { private static int x = 1; public static abstract class StaticNested { public abstract void run(); } } 有人能解释一下这个场景的概念和实际用途吗 静态和抽象可以一起用于嵌套类,例如 B是

据我所知,静态和最终组合可以一起使用,但java中不允许静态和抽象或最终和抽象组合。但我看到的一些代码如下所示

public class Enclosing {

    private static int x = 1;

    public static abstract class StaticNested {

        public abstract void run();
    }
  }

有人能解释一下这个场景的概念和实际用途吗

静态
抽象
可以一起用于嵌套类,例如

B
是一个
静态
嵌套类,它需要具体的子类来实现
someMethod()

但不能同时用于方法,例如

当然,
abstract
final
不能同时使用-这样的组合是毫无意义的

静态抽象类的使用

静态抽象类
的合适用途是仅用于您的类使用的类似节点的对象,例如表示映射中条目的类(例如
java.util.map.entry
,它是
接口,但可能是静态抽象类),或
链接列表
节点的类,但是实现留给封闭类的实现,这些类本身也通过扩展嵌套类来使用和提供嵌套类的实现。

静态
抽象
可以一起用于嵌套类,例如

B
是一个
静态
嵌套类,它需要具体的子类来实现
someMethod()

但不能同时用于方法,例如

当然,
abstract
final
不能同时使用-这样的组合是毫无意义的

静态抽象类的使用

静态抽象类
的合适用途是仅用于您的类使用的类似节点的对象,例如表示映射中条目的类(例如
java.util.map.entry
,它是
接口,但可能是静态抽象类),或
链接列表
节点的类,但是实现留给封闭类的实现,它们自己也通过扩展嵌套类来使用和提供嵌套类的实现。

您明白吗?你明白吗?如果你同时理解了这两件事,那么你就理解了抽象静态嵌套类的概念。简短回答:否。不再回答:否,因为它不会有用。@Bohemian静态嵌套类当然可以是抽象的,并且具有与顶级抽象类相同的有效用途。也就是说,静态方法不能是抽象的,但OP使用了一个类作为示例,而不是一个方法。@Slaw-Hmmm。确实如此。你明白吗?你明白吗?如果你同时理解了这两件事,那么你就理解了抽象静态嵌套类的概念。简短回答:否。不再回答:否,因为它不会有用。@Bohemian静态嵌套类当然可以是抽象的,并且具有与顶级抽象类相同的有效用途。也就是说,静态方法不能是抽象的,但OP使用了一个类作为示例,而不是一个方法。@Slaw-Hmmm。确实如此。
class A {
    static abstract class B {
        abstract void someMethod();
    }
}
static abstract void someMethod();  // compile error