【发布时间】:2012-08-08 23:32:36
【问题描述】:
在 java 中,我需要防止 Level1 类(请看下面的示例代码)派生超过两个级别。派生到 Level2 和 Level3 是可以的,但如果类是由 Level4 派生的,那么应该抛出异常。看下面的代码示例。
代码示例:
class Level1 {
private int level = 1;
protected Level1() throws RuntimeException {
level++;
//System.out.println(level);
if (level > 2) {
throw new RuntimeException("Can't implement more than 2 levels");
}
}
}
class Level2 extends Level1 {
protected Level2() {
}
}
class Level3 extends Level2 {
Level3() {
}
}
class Level4 extends Level3 {
Level4() {
}
}
从上面的代码示例中,我没有提出使用静态 int 级别计数器的解决方案。我只是想解释这个问题。
在 Java 中是否有可能通过实现一些逻辑或使用一些 API,其中 Level1 基类可以计算它已派生的级别数?
【问题讨论】:
-
这背后的动机是什么?
-
你应该解释这样做的动机,否则你的问题可能会被关闭。
-
Giant-mega-WTF-codesmell 这对一个古怪的设计大喊大叫。
-
您在寻找工厂模式吗?这真是一个奇怪的要求.. 除了你记录最后一级的类来制作它们
final -
+1 表示“Giant-meta 等”当场。
标签: java inheritance