- 所有父级接口:
MemoryLayoutPREVIEW
SequenceLayout 是 Java 平台的预览 API。
预览功能可能会在未来的版本中删除,或升级为 Java 平台的永久功能。
表示给定 element layout 重复的复合布局。重复计数被称为序列布局的 element count 。可以将有限序列视为组布局,其中序列布局的元素布局重复次数等于序列布局的元素计数。换句话说,这个布局:
相当于下面的布局:
MemoryLayout.sequenceLayout(3, ValueLayout.JAVA_INT.withOrder(ByteOrder.BIG_ENDIAN));
MemoryLayout.structLayout(
ValueLayout.JAVA_INT.withOrder(ByteOrder.BIG_ENDIAN),
ValueLayout.JAVA_INT.withOrder(ByteOrder.BIG_ENDIAN),
ValueLayout.JAVA_INT.withOrder(ByteOrder.BIG_ENDIAN));
- 实现要求:
- 此类是不可变的、线程安全的和 value-based 。
- 自从:
- 19
-
内部类总结
在接口 java.lang.foreign.MemoryLayout 中声明的嵌套类/接口PREVIEW
MemoryLayout.PathElementPREVIEW -
方法总结
修饰符和类型方法描述long返回此序列布局的元素计数。返回与此序列布局关联的元素布局。flatten()返回一个扁平的序列布局。reshape(long... elementCounts) 将此序列布局中的元素重新排列成多维序列布局。withBitAlignment(long bitAlignment) 返回与此布局具有相同大小和名称但具有指定对齐约束(以位为单位)的相同类型的内存布局。withElementCount(long elementCount) 返回与此序列布局具有相同元素布局、对齐约束和名称但具有指定元素计数的序列布局。返回与此布局具有相同大小和对齐约束但具有指定名称的相同类型的内存布局。在接口 java.lang.foreign.MemoryLayout 中声明的方法PREVIEW
bitAlignment, bitOffset, bitOffsetHandle, bitSize, byteAlignment, byteOffset, byteOffsetHandle, byteSize, equals, hashCode, name, select, sliceHandle, toString, varHandle
-
方法详情
-
elementLayout
MemoryLayout PREVIEW elementLayout()返回与此序列布局关联的元素布局。- 返回:
- 与此序列布局关联的元素布局
-
elementCount
long elementCount()返回此序列布局的元素计数。- 返回:
- 此序列布局的元素数
-
withElementCount
返回与此序列布局具有相同元素布局、对齐约束和名称但具有指定元素计数的序列布局。- 参数:
elementCount- 新元素计数。- 返回:
- 具有给定元素数的序列布局。
- 抛出:
IllegalArgumentException- 如果elementCount < 0。
-
reshape
将此序列布局中的元素重新排列成多维序列布局。生成的布局是一个序列布局,其中此序列布局的扁平投影中的元素布局(请参阅flatten())根据提供的元素计数重新排列为一个或多个嵌套序列布局。这种转换保留了布局大小;也就是说,乘以提供的元素数必须产生与此序列布局的展平投影相同的元素数。例如,给定一个序列布局:
调用var seq = MemoryLayout.sequenceLayout(4, MemoryLayout.sequenceLayout(3, ValueLayout.JAVA_INT));seq.reshape(2, 6)将产生以下序列布局:var reshapeSeq = MemoryLayout.sequenceLayout(2, MemoryLayout.sequenceLayout(6, ValueLayout.JAVA_INT));如果提供的元素计数之一是特殊值
-1,则该位置的元素计数将从剩余元素计数和此布局的展平投影的元素计数中推断出来。例如,与上述reshapeSeq等效的布局也可以通过以下方式计算:var reshapeSeqImplicit1 = seq.reshape(-1, 6); var reshapeSeqImplicit2 = seq.reshape(2, -1);- 参数:
elementCounts- 一个元素计数数组,其中最多一个可以是-1。- 返回:
-
一种序列布局,其中此序列布局的扁平投影中的元素布局(请参阅
flatten())被重新排列为一个或多个嵌套序列布局。 - 抛出:
IllegalArgumentException- 如果两个或多个元素计数设置为-1,或者如果一个或多个元素计数为<= 0(但不是-1),或者,如果在任何必要的推理之后,将元素计数相乘不会产生与此序列布局的扁平化投影。
-
flatten
SequenceLayout PREVIEW flatten()返回一个扁平的序列布局。返回的序列布局的元素布局是递归遍历该序列布局的元素布局找到的第一个非序列元素布局。这种转换保留了布局大小;此序列布局中的嵌套序列布局将被删除,它们的元素计数将合并到返回的序列布局中。例如,给定一个序列布局:调用var seq = MemoryLayout.sequenceLayout(4, MemoryLayout.sequenceLayout(3, ValueLayout.JAVA_INT));seq.flatten()将产生以下序列布局:var flattenedSeq = MemoryLayout.sequenceLayout(12, ValueLayout.JAVA_INT);- 返回:
- 与此布局具有相同大小的序列布局(但可能具有不同的元素计数),其元素布局不是序列布局。
-
withName
从接口MemoryLayout复制的描述返回与此布局具有相同大小和对齐约束但具有指定名称的相同类型的内存布局。- 指定者:
withName在接口MemoryLayoutPREVIEW中- 参数:
name- 布局名称。- 返回:
- 具有给定名称的内存布局。
- 参见:
-
withBitAlignment
从接口MemoryLayout复制的描述返回与此布局具有相同大小和名称但具有指定对齐约束(以位为单位)的相同类型的内存布局。- 指定者:
withBitAlignment在接口MemoryLayoutPREVIEW中- 参数:
bitAlignment- 布局对齐约束,以位表示。- 返回:
- 具有给定对齐约束的内存布局。
-
SequenceLayout。