Java中的私有抽象类

use*_*453 1 java private class abstract

我是Java的新手.我最近在浏览一些Android应用程序源代码时遇到了常规类中的私有静态抽象类.什么可能是这种嵌套类的用例?它将如何使用以及使用这样一个类有哪些设计好处?

Jon*_*eet 9

我以前从未遇到过这种模式,但我可以想象它有用:

  • 您希望在一堆嵌套类中以类似的方式实现接口(例如,从封闭类中的公共方法返回)
  • 那些接口实现有很多共同的代码(因此是抽象类)
  • 你不需要任何代码其他比实现了解的抽象类

抽象类的子类也可以是私有的.(通常,当我编写嵌套类时,它们是私有实现细节.)例如:

public interface Foo {
    // Methods here
}

public class FooFactory {

    public static Foo getFoo1() {
        return new Foo1();
    }

    public static Foo getFoo2() {
        return new Foo2();
    }

    private static abstract class AbstractFoo implements Foo {
        // Implement methods in Foo in terms of 
        // doSomething()...

        // Implementation-specific method
        public abstract void doSomething();
    }

    private static class Foo1 extends AbstractFoo {
        public void doSomething() {
        }
    }

    private static class Foo2 extends AbstractFoo {
        public void doSomething() {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)