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)
但是,你需要问自己的更重要的问题是,你真的需要这个限制吗?