JAVA:如何限制在一个级别上扩展类

use*_*281 0 java inheritance design-patterns

我的问题陈述如下:

我在java中创建一个库,对于某些类我希望用户应该能够扩展我的类,但只在一个级别,这些子类不应该可用于子类.如果程序员将他们的子类作为最终,那么可以实现,但决定将转向他们.我想从我的图书馆控制这个.我怎样才能做到这一点 ?

任何帮助,将不胜感激

Jef*_*rey 11

我想你可以用反射来实现这样的东西:

public abstract class ExtendOnce {
    public static class Subclass extends ExtendOnce {

    }

    public static class SubSubclass extends Subclass {

    }

    protected ExtendOnce() {
        if (!getClass().getSuperclass().equals(ExtendOnce.class)) {
            throw new RuntimeException(
                    "You extended this class more than once!");
        }
    }

    public static void main(String[] args) {
        System.out.println(new Subclass());
        System.out.println(new SubSubclass()); // throws exception
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,你需要问自己的更重要的问题是,你真的需要这个限制吗?