问题标签 [java-sealed-type]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
8623 浏览

java - Java 17 中的密封类是什么

今天我将我的 java 版本从 16 更新到 17,我发现sealedclass 是其中的一个新特性。我认为可以这样声明——

但是java中密封类有什么用呢?

我也知道这是 jdk-15 中的预览功能

0 投票
1 回答
45 浏览

java - Java 序列化安全问题(不符合客户的安全标准)

我在一家小型软件公司工作,我们使用本地安装的代理,该代理在 OSGI env 上运行,以收集有关服务器的数据并使用 ws hhtp 请求将它们发送到主服务器。通常我们使用sbe 协议对消息进行编码/解码,但它不适用于大于 50M 的消息(主服务器卡在 sbe 解码上),因此对于这种特殊情况,我发送了 Java 序列化对象,该对象将在服务器端进行反序列化。一个大客户在安装之前对我们的应用程序进行了大规模测试,它检测到以下内容:

/resource/save-data-upload-big-file 容易受到不安全的 java 反序列化的影响。

我们成功利用此漏洞在服务器上执行。 在此处输入图像描述

我不清楚他们是如何做到这一点的(远程代码执行),但他们建议使用另一种方法将收集到的数据传输到服务器。

我在考虑SealedObject ... RCE安全吗?提前致谢

0 投票
1 回答
176 浏览

java - 如何使用带有泛型的密封类?

我有一个父抽象类和采用泛型的子类。

在父类中,我收到警告:

在子类中,我收到警告:

使它们像这样参数化:

甚至

给出错误:

如何删除这些警告和错误?

0 投票
0 回答
32 浏览

java - 如何获取密封类的所有子类的实例?

有没有办法获取类中允许的子类实例的集合sealed

有类似方法的东西会很好Enum.values(),因为我不想手动收集它们。

我能做的最好的是:

0 投票
0 回答
25 浏览

design-patterns - 带有模式开关的 Java 密封类型 VS 模式访问者

顺便说一句:在 java 15 之前,人们使用“类型安全访问者”模式来解决这个问题。我建议不要为了你的理智而学习,但如果你好奇,你可以看看 ANTLR 生成的代码——它都是一个不同“形状”数据结构的大层次结构。

资料来源:第 2 节,Java 中“密封接口”的意义何在?

在我们使用 Visitor 来避免多个 instanceof 的情况下:

  • 使用模式访问者而不是使用带有开关模式匹配的密封类型有什么优势?
  • 使用带有开关模式匹配类型的密封而不是使用访问者有什么优势?
  • 我们应该停止使用 Visitor 吗?