java如何防止类派生超过两级?

标签 java inheritance

在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/

相关文章:

java - 使用 Java 监视 tcpflow 输出?

java - 将文本文件打印到java中的特定打印机

java - InverseRelationShadowVariable 必须属于 planningEntity 吗?

Java 推断类型化 HashSet 的类型错误

java - 我们继承自 Object 吗?

java - 向下 float 和双倍值的向下函数

javascript - 在基于 REST 的 Web 应用程序中保留继承的概念

c# - 通用函数创建参数基的通用对象

java - 在 Java 中创建自定义集合

php - 在 PHP 中从父类(super class)获取子类命名空间