You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断类是否被显式标记为non-sealed且无需检查父类层级?

判断类是否显式标记为non-sealed的方法

Java 17及以后版本中,没有对应isSealed()的isNonSealed()直接方法,但可以通过类的注解信息直接判断是否显式标记了non-sealed,无需遍历父类层级。

具体操作方式:

  • 调用目标类的getAnnotationsByType()方法,传入NonSealed.class作为参数
  • 若返回的注解数组长度大于0,说明该类被显式标记为non-sealed

示例代码:

import java.lang.reflect.NonSealed;

public class NonSealedCheckDemo {
    public static void main(String[] args) {
        boolean isExplicitNonSealed = MyNonSealedClass.class.getAnnotationsByType(NonSealed.class).length > 0;
        System.out.println(isExplicitNonSealed); // 类显式标记non-sealed时输出true
    }
}

non-sealed class MyNonSealedClass {}

注意事项:

  • 该方法仅适用于Java 17及以上版本,因为密封类(含non-sealed修饰符)是Java 17引入的特性
  • 只有类显式添加non-sealed修饰符时才会携带该注解;未涉及密封特性的普通类、final类都不会返回该注解,完全符合你“直接从类本身获取显式标记信息”的需求

内容的提问来源于stack exchange,提问作者xtay2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 06:15:57