模块 java.base

接口 SequenceLayout

所有父级接口:
MemoryLayoutPREVIEW

public sealed interface SequenceLayout extends MemoryLayout PREVIEW
SequenceLayout 是 Java 平台的预览 API。
程序只能在启用预览功能时使用 SequenceLayout
预览功能可能会在未来的版本中删除,或升级为 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
  • 方法详情

    • elementLayout

      MemoryLayout PREVIEW  elementLayout()
      返回与此序列布局关联的元素布局。
      返回:
      与此序列布局关联的元素布局
    • elementCount

      long elementCount()
      返回此序列布局的元素计数。
      返回:
      此序列布局的元素数
    • withElementCount

      SequenceLayout PREVIEW  withElementCount(long elementCount)
      返回与此序列布局具有相同元素布局、对齐约束和名称但具有指定元素计数的序列布局。
      参数:
      elementCount - 新元素计数。
      返回:
      具有给定元素数的序列布局。
      抛出:
      IllegalArgumentException - 如果 elementCount < 0
    • reshape

      SequenceLayout PREVIEW  reshape(long... elementCounts)
      将此序列布局中的元素重新排列成多维序列布局。生成的布局是一个序列布局,其中此序列布局的扁平投影中的元素布局(请参阅 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

      SequenceLayout PREVIEW  withName(String  name)
      从接口 MemoryLayout 复制的描述
      返回与此布局具有相同大小和对齐约束但具有指定名称的相同类型的内存布局。
      指定者:
      withName 在接口 MemoryLayoutPREVIEW
      参数:
      name - 布局名称。
      返回:
      具有给定名称的内存布局。
      参见:
    • withBitAlignment

      SequenceLayout PREVIEW  withBitAlignment(long bitAlignment)
      从接口 MemoryLayout 复制的描述
      返回与此布局具有相同大小和名称但具有指定对齐约束(以位为单位)的相同类型的内存布局。
      指定者:
      withBitAlignment 在接口 MemoryLayoutPREVIEW
      参数:
      bitAlignment - 布局对齐约束,以位表示。
      返回:
      具有给定对齐约束的内存布局。