在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 基类可以计算其派生的级别数?
最佳答案
您可以在构造函数中使用反射并遍历 this.getClass() 的继承链来查看嵌套级别。实际上,对 this.getClass().getSuperClass() == Level1.class 的测试应该已经可以解决问题了。
关于java如何防止类派生超过两级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11867682/