Module java.base

Interface AddressLayout

所有超级接口:
MemoryLayout预览, ValueLayout预览

public sealed interface AddressLayout extends ValueLayoutPREVIEW
AddressLayout 是Java平台的预览API。
仅当启用预览功能时,程序才能使用AddressLayout
预览功能可能会在将来的版本中被移除,或升级为Java平台的永久功能。
用于模拟某个内存区域地址的值布局。与地址布局相关联的载体是MemorySegment.class。地址布局的大小和对齐方式取决于平台(例如,在64位平台上,地址布局的大小和对齐方式设置为8字节)。

地址布局可以选择包含一个目标布局。具有目标布局T的地址布局可用于模拟布局为T的内存区域的地址。例如,具有目标布局ValueLayout.JAVA_INT预览的地址布局可用于模拟长度为4字节的内存区域的地址。在以下情况下指定目标布局可能很有用:

自:
19
参见:
  • Method Details

    • withName

      AddressLayoutPREVIEW withName(String name)
      返回具有与此布局相同特征的内存布局,但具有给定的名称。
      指定者:
      withName 在接口 MemoryLayout预览
      指定者:
      withName 在接口 ValueLayout预览
      参数:
      name - 布局名称。
      返回:
      具有与此布局相同特征但具有给定名称的内存布局
      参见:
    • withoutName

      AddressLayoutPREVIEW withoutName()
      返回具有与此布局相同特征但没有名称的内存布局。
      指定者:
      withoutName 在接口 MemoryLayout预览
      指定者:
      withoutName 在接口 ValueLayout预览
      返回:
      具有与此布局相同特征但没有名称的内存布局
      参见:
    • withByteAlignment

      AddressLayoutPREVIEW withByteAlignment(long byteAlignment)
      返回具有与此布局相同特征但具有给定对齐约束(以字节为单位)的内存布局。
      指定者:
      withByteAlignment 在接口 MemoryLayout预览
      指定者:
      withByteAlignment 在接口 ValueLayout预览
      参数:
      byteAlignment - 布局对齐约束,以字节表示。
      返回:
      具有与此布局相同特征但具有给定对齐约束(以字节为单位)的内存布局
    • withOrder

      AddressLayoutPREVIEW withOrder(ByteOrder order)
      返回具有与此布局相同特征但具有给定字节顺序的值布局。
      指定者:
      withOrder 在接口 ValueLayout预览
      参数:
      order - 所需的字节顺序。
      返回:
      具有与此布局相同特征但具有给定字节顺序的值布局
    • withTargetLayout

      AddressLayoutPREVIEW withTargetLayout(MemoryLayoutPREVIEW layout)
      返回具有与此地址布局相同的载体、对齐约束、名称和顺序,但与指定目标布局相关联的地址布局。返回的地址布局允许将原始地址作为内存段预览访问,其大小设置为指定布局的大小。此外,如果访问的原始地址与提供的布局中的对齐约束不兼容,则将抛出IllegalArgumentException
      API注释:
      此方法还可用于创建一个地址布局,当使用时,会创建具有最大大小的本机内存段(例如Long.MAX_VALUE)。可以通过使用未指定大小的目标序列布局来实现:
       AddressLayout addressLayout   = ...
       AddressLayout unboundedLayout = addressLayout.withTargetLayout(
               MemoryLayout.sequenceLayout(ValueLayout.JAVA_BYTE));
      

      此方法是受限制的。受限制的方法是不安全的,如果使用不正确,可能会导致JVM崩溃,甚至更糟的是导致内存损坏。因此,客户端应避免依赖受限制的方法,并在可能的情况下使用安全且受支持的功能。

      参数:
      layout - 目标布局。
      返回:
      具有与此布局相同特征但具有提供的目标布局的地址布局。
      抛出:
      IllegalCallerException - 如果调用者所在的模块未启用本机访问。
      参见:
    • withoutTargetLayout

      AddressLayoutPREVIEW withoutTargetLayout()
      返回具有与此地址布局相同的载体、对齐约束、名称和顺序,但没有目标布局的地址布局。
      API注释:
      这对于比较具有不同目标布局但其他方面相同的两个地址布局很有用。
      返回:
      具有与此布局相同特征但没有目标布局的地址布局。
      参见:
    • targetLayout

      Optional<MemoryLayoutPREVIEW> targetLayout()
      返回与此地址布局关联的目标布局(如果有)。
      返回:
      与此地址布局关联的目标布局(如果有)。