-
- Functional Interface:
- 这是一个功能界面,因此可以用作lambda表达式或方法引用的赋值对象。
@FunctionalInterface public interface ObjectInputFilter
反序列化过程中过滤类,数组长度和图形指标。 如果设置为ObjectInputStream
,则调用checkInput(FilterInfo)
方法来验证类,每个数组的长度,从流中读取的对象数,图形的深度以及从流中读取的总字节数。可以通过
setObjectInputFilter
为单个ObjectInputStream设置过滤器。 可以通过Config.setSerialFilter
设置一个过滤器,以影响不另外设置过滤器的每个ObjectInputStream
。一个过滤器确定参数是
ALLOWED
还是REJECTED
,并返回相应的状态。 如果过滤器无法确定状态,则应返回UNDECIDED
。 过滤器应设计用于特定用例和预期类型。 专为特定用途设计的过滤器可以传递超出过滤器范围的类。 如果过滤器的目的是黑名单,那么它可以拒绝匹配的候选类,并为其他人报告UNDECIDED。 可以用类被称为过滤等于null
,arrayLength
等于-1,深度,引用的数量,以及流大小,并返回反映只有一个或只有一些值的状态。 这允许过滤器具体关于其报告的选择,并使用其他过滤器,而不强制允许或拒绝状态。通常,自定义过滤器应该检查是否配置了过程范围的过滤器,如果是,则过滤器过滤器被配置。 例如,
ObjectInputFilter.Status checkInput(FilterInfo info) { ObjectInputFilter serialFilter = ObjectInputFilter.Config.getSerialFilter(); if (serialFilter != null) { ObjectInputFilter.Status status = serialFilter.checkInput(info); if (status != ObjectInputFilter.Status.UNDECIDED) { // The process-wide filter overrides this filter return status; } } if (info.serialClass() != null && Remote.class.isAssignableFrom(info.serialClass())) { return Status.REJECTED; // Do not allow Remote objects } return Status.UNDECIDED; }
除非另有说明,否则将
null
参数传递给此接口中的方法及其嵌套类将导致抛出NullPointerException
。- 从以下版本开始:
- 9
- 另请参见:
-
ObjectInputStream.setObjectInputFilter(ObjectInputFilter)
-
-
Nested Class Summary
Nested Classes Modifier and Type 接口 描述 static class
ObjectInputFilter.Config
一个实用程序类,用于设置和获取过程范围的过滤器或从模式字符串创建过滤器。static interface
ObjectInputFilter.FilterInfo
FilterInfo提供了有关正在反序列化的当前对象的信息以及ObjectInputStream
的状态。static class
ObjectInputFilter.Status
对类的检查状态,数组长度,引用次数,深度和流大小。
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 ObjectInputFilter.Status
checkInput(ObjectInputFilter.FilterInfo filterInfo)
检查类,数组长度,对象引用数,深度,流大小和其他可用过滤信息。
-
-
-
方法详细信息
-
checkInput
ObjectInputFilter.Status checkInput(ObjectInputFilter.FilterInfo filterInfo)
检查类,数组长度,对象引用数,深度,流大小和其他可用过滤信息。 该方法的实现检查反序列化期间创建的对象图的内容。 该过滤器返回Status.ALLOWED
,Status.REJECTED
,或Status.UNDECIDED
。- 参数
-
filterInfo
- 提供有关反序列化的当前对象的信息(如果有),以及ObjectInputStream
的状态 - 结果
-
Status.ALLOWED
如果接受,Status.REJECTED
如果拒绝,Status.UNDECIDED
如果未决定。
-
-