类 Realm
在此页面上
- io.realm
- 嵌套类摘要
- 字段摘要
- 方法摘要
- 继承方法
- 字段详细信息
DEFAULT_REALM_NAME
ENCRYPTION_KEY_LENGTH
- 方法详细信息
- addChangeListener
- asFlowable
- compactRealm
- copyFromRealm
- copyToRealm
- copyToRealmOrUpdate
- createAllFromJson
- createEmbeddedObject
- createObject
- createObjectFromJson
- createOrUpdateAllFromJson
- createOrUpdateObjectFromJson
- 删除
- deleteRealm
- executeTransaction
- executeTransactionAsync
- 冻结
- getApplicationContext
- getDefaultConfiguration
- getDefaultInstance
- getDefaultModule
- getGlobalInstanceCount
- getInstance
- getInstanceAsync
- getLocalInstanceCount
- getSchema
- init
- insert
- insertOrUpdate
- isEmpty
- migrateRealm
- 删除所有变更监听器
- removeChangeListener
- removeDefaultConfiguration
- setDefaultConfiguration
- WHERE
io.realm
Realm 类是对象持久存储的存储和事务管理器。 它负责创建 RealmObject 的实例。 Realm 中的对象可以随时查询和读取。 创建、修改和删除对象必须在事务内部完成。 请参阅executeTransaction(Transaction)
事务确保多个实例(在多个线程上)可以访问处于一致状态的相同对象,并具有完整的 ACID 保证。
请务必记住在使用 Realm 实例后调用close()方法。 否则可能会导致 java.lang.OutOfMemoryError 因为无法释放原生资源。
Realm实例不能跨不同线程使用。 这意味着您必须在要使用Realm的每个线程上打开一个实例。 Realm实例使用引用计数按线程自动缓存,因此只要引用计数未达到零,调用getInstance(RealmConfiguration)将仅返回缓存的Realm ,并且应被视为轻量级操作。
对于用户界面线程,这意味着打开和关闭Realms应发生在onCreate/onDestroy或onStart/onStop中。
Realm 实例使用 android.os.Handler 跨线程协调其状态 机制。这也意味着没有 android.os.Looper 的线程上的 Realm 实例 除非手动调用 refresh() ,否则无法接收更新。
在 Android 活动中使用 Realm 的标准模式如下所示:
public class RealmApplication extends Application { public void onCreate() { super.onCreate(); // The Realm file will be located in package's "files" directory. RealmConfiguration realmConfig = new RealmConfiguration.Builder(this).build(); Realm.setDefaultConfiguration(realmConfig); } } public class RealmActivity extends Activity { private Realm realm; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_main); realm = Realm.getDefaultInstance(); } protected void onDestroy() { super.onDestroy(); realm.close(); } }
Realm 支持最大包含 16 MB 的字符串和字节字段。
嵌套类摘要
修饰符和类型 | 类和描述 |
---|---|
public static interface | |
public abstract static |
字段摘要
修饰符和类型 | 字段和描述 |
---|---|
public static final String | |
public static final int | 用于加密 Realm 数据的加密密钥所需的长度。 |
方法摘要
修饰符和类型 | 方法和说明 |
---|---|
public void | 为 Realm 添加变更监听器。 |
public <any> | asFlowable () 返回一个监控此 Realm 变更的 RxJava Flowable。 |
public static boolean | 压缩 Realm 文件。 |
公用E | 为已持久化的RealmObject 创建非托管内存中副本。 |
公用E | 为已持久化的RealmObject 创建非托管内存中副本。 |
公共 列表 | 为已持久化的 RealmObject 创建非托管内存中副本。 |
公共 列表 | 为已持久化的 RealmObject 创建非托管内存中副本。 |
公共 列表 | 将 RealmObject collection复制到 Realm 实例并返回其副本。 |
公用E | 将 RealmObject 复制到 Realm 实例并返回副本。 |
公共 列表 | 更新由io.realm.annotations.PrimaryKey标识的现有 RealmObject 列表;如果找不到现有对象,则创建新副本。 |
公用E | 更新由同一io.realm.annotations.PrimaryKey标识的现有 RealmObject,如果找不到现有对象,则创建新副本。 |
public void | 为 JSON 数组中的每个对象创建一个 Realm 对象。 |
公用E | 实例化一个新的嵌入式对象并将其添加到 Realm 中。 |
公用E | 实例化一个新对象并将其添加到已设置主键值的 Realm 中。 |
公用E | 实例化一个新对象并将其添加到 Realm 中。 |
公用E | 创建一个预填充 JSON 对象数据的 Realm 对象。 |
public void | 尝试使用新的 JSON 数据更新由其主键标识的现有对象的列表。 |
公用E | 尝试使用新的 JSON 数据更新由主键定义的现有对象。 |
public void | 从 Realm 中删除指定类的所有对象。 |
public static boolean | 从文件系统中删除 Realm 文件以及由给定RealmConfiguration指定的相关临时文件。 |
public void | 在 Realm 上执行给定事务。 |
Realm.Transaction transaction, Realm.Transaction.OnSuccess onSuccess, Realm.Transaction.OnError onError ) 与executeTransactionAsync(Transaction)类似,但也接受 OnSuccess 和 OnError 回调。 | |
与executeTransactionAsync(Transaction)类似,但也接受 OnError 回调。 | |
与executeTransactionAsync(Transaction)类似,但也接受 OnSuccess回调。 | |
与executeTransaction(Transaction)类似,但在工作线程上异步运行。 | |
公共Realm | freeze () 返回当前 Realm 的冻结快照。 |
public static Context | 获取使用Realm Realm.init(Context) 或Realm .init(Context,string ) 初始化 时使用的应用程序上下文。 |
public static RealmConfiguration | 返回getDefaultInstance()的默认配置。 |
public static Realm | Realm 静态构造函数,返回由 setDefaultConfiguration(RealmConfiguration) 设置的 io.realm.RealmConfiguration 定义的 Realm 实例 |
返回默认 Realm 模块。 | |
public static int | 返回当前进程中使用此配置的所有线程中当前打开的 Realm 实例数。 |
public static Realm | Realm 静态构造函数,返回由提供的io.realm.RealmConfiguration定义的 Realm 实例 |
public static RealmAsyncTask | 在进程中创建每个RealmConfiguration的第一个 Realm 实例可能需要一些时间,因为此时所有初始化代码都需要运行(设置 Realm、验证模式和创建初始数据)。 |
public static int | 返回调用此方法的线程上当前打开的 Realm 实例数。 |
getSchema () 返回此 Realm 的模式。 | |
public static synchronized void | |
public static synchronized void | 初始化 Realm 库并创建可供使用的默认配置。 |
public void | 插入非托管 RealmObject。 |
public void | 插入非托管 RealmObject 的列表。 |
public void | 插入或更新非托管 RealmObject。 |
public void | 插入或更新非托管 RealmObject 列表。 |
公共布尔值 | isEmpty () 检查此io. 域。 Realm包含任何对象。 |
public static void | 手动Atlas Triggers RealmMigration 上的迁移。 |
public static void | 手动Atlas Triggers与给定 RealmConfiguration 关联的迁移。 |
public void | 删除所有用户定义的变更侦听器。 |
public void | 删除指定的变更侦听器。 |
public static void | 删除当前默认配置(如有)。 |
public static void | |
返回类型化 RealmQuery,可用于查询该类型的特定对象 |
继承方法
从类 java.lang.Object 继承的方法 :
getClass
、hashCode
、equals
、clone
、toString
、notify
、notifyAll
、wait
、wait
、wait
、finalize
从类io.realm.BaseRealm继承的方法:
setAutoRefresh
、isAutoRefresh
、refresh
、isInTransaction
、addListener
、removeListener
、asFlowable
、removeAllListeners
、writeCopyTo
、writeEncryptedCopyTo
、waitForChange
、stopWaitForChange
、beginTransaction
、commitTransaction
、cancelTransaction
、freeze
、isFrozen
、getNumberOfActiveVersions
、checkIfValid
、checkAllowQueriesOnUiThread
、checkAllowWritesOnUiThread
、checkIfInTransaction
、checkIfValidAndInTransaction
、getPath
、getConfiguration
、getVersion
、close
、isClosed
、isEmpty
、getSchema
、getSubscriptions
、deleteAll
、migrateRealm
、finalize
字段详细信息
DEFAULT_REALM_NAME
ENCRYPTION_KEY_LENGTH
用于加密 Realm 数据的加密密钥所需的长度。
方法详细信息
addChangeListener
向 Realm 添加变更监听器。此线程或另一个线程提交变更时将执行监听器。 Realm 实例是按线程单例运行并进行缓存的,因此即使调用close() ,也应手动删除监听器。 否则存在内存泄漏的风险。 参数
抛出异常
|
asFlowable
public <any> asFlowable () | ||||||
---|---|---|---|---|---|---|
返回一个监控此 Realm 变更的 RxJava Flowable。 订阅时,它将发出当前状态。 随着 Realm 更新,项目将不断发出 - 从 Realm Flowables 发出的项被冻结(请参阅冻结() 。 这意味着它们是不可变的,可以在任何线程上读取。 Realm Flowables 始终从持有活动 Realm 的线程中发出项目。 这意味着,如果需要进行进一步处理,建议观察计算调度器上的值:
如果希望
返回: 仅调用 覆盖
|
compactRealm
压缩 Realm 文件。 Realm 文件通常包含可用/未使用的空间。 此方法会删除此可用空间,从而减小文件大小。 Realm 文件中的对象保持不变。在调用此方法之前,必须关闭文件,否则将返回 The file system should have free space for at least a copy of the Realm file. The Realm file is left untouched if any file operation fails. 参数
返回:
|
copyFromRealm
为已持久化的RealmObject 创建非托管内存中副本。 这是深度复制,可将所有引用的对象复制到定义的深度。 复制的对象均已与 Realm 分离,并且将不再自动更新。 这意味着复制的对象可能包含不再与其他托管 Realm 对象一致的数据。 *警告*:对复制对象的任何更改都可以使用copyToRealmOrUpdate(RealmModel, ImportFlag...)合并回Realm ,但所有字段都将被覆盖,而不仅仅是已更改的字段。 这包括对其他对象的引用,即使它们可能由于到达 类型参数
参数
返回: 托管RealmObject的内存中分离副本。 抛出异常
|
为已持久化的RealmObject 创建非托管内存中副本。 这是一个深度复制,将复制所有引用的对象。 复制的对象均已与 Realm 分离,并且将不再自动更新。 这意味着复制的对象可能包含不再与其他托管 Realm 对象一致的数据。 *警告*:对复制对象的任何更改都可以使用copyToRealmOrUpdate(RealmModel, ImportFlag...)合并回 Realm,但所有字段都将被覆盖,而不仅仅是已更改的字段。 这包括对其他对象的引用,并且可能会覆盖其他线程所做的更改。 可以使用ImportFlag修改此行为。 类型参数
参数
返回: 托管RealmObject的内存中分离副本。 抛出异常
|
为已持久化的 RealmObject 创建非托管内存中副本。 这是一个深度复制,会将所有引用的对象复制到定义的深度。复制的对象全部与 Realm 分离,并且不会再自动更新。 这意味着复制的对象可能包含不再与其他托管 Realm 对象一致的数据。 *警告*:对复制对象的任何更改都可以使用copyToRealmOrUpdate(Iterable, ImportFlag...)合并回Realm ,但所有字段都将被覆盖,而不仅仅是已更改的字段。 这包括对其他对象的引用,即使它们可能由于到达 类型参数
参数
返回: RealmObjects 的内存中分离副本。 抛出异常
|
为已持久化的 RealmObject 创建非托管内存中副本。 这是一个深度复制,将复制所有引用的对象。复制的对象均会与 Realm 分离,并且将不再自动更新。 这意味着复制的对象可能包含不再与其他托管 Realm 对象一致的数据。 *警告*:对复制对象的任何更改都可以使用copyToRealmOrUpdate(RealmModel, ImportFlag...)合并回 Realm,但所有字段都将被覆盖,而不仅仅是已更改的字段。 这包括对其他对象的引用,并且可能会覆盖其他线程所做的更改。 可以使用ImportFlag修改此行为。 类型参数
参数
返回: 托管 RealmObjects 的内存中分离副本。 抛出异常
|
copyToRealm
将 RealmObject collection复制到 Realm 实例并返回其copy。对原始 RealmObject 的任何进一步更改都不会反映在 Realm 副本中。 这是深度复制,即所有引用的对象都将被复制。 已在此 Realm 中的对象将被忽略。请注意,复制对象将复制所有字段值。 如果未提供,则对象和子对象中任何未设置的字段都将设置为其默认值。 参数
返回: 转换后的 RealmObject 列表,所有这些对象的属性均由 Realm 托管。 抛出异常
|
将 RealmObject 复制到 Realm 实例并返回副本。 对原始 RealmObject 的任何进一步更改都不会反映在 Realm 副本中。 这是一个深复制,因此所有引用的对象都将被复制。 已在此 Realm 中的对象将被忽略。请注意,复制对象将复制所有字段值。 如果未提供,则此对象和子对象中任何未设置的字段都将设置为其默认值。 参数
返回: 一个托管 RealmObject,其属性由 Realm 支持。 抛出异常
|
copyToRealmOrUpdate
更新由io.realm.annotations.PrimaryKey标识的现有 RealmObject 列表;如果找不到现有对象,则创建新副本。 这是深度复制或更新,即所有引用的对象都将被复制或更新。 请注意,复制对象将复制所有字段值。 如果未提供,则对象和子对象中任何未设置的字段都将设置为其默认值。 参数
返回: 所有新的或更新的 RealmObject 的列表。 抛出异常
|
更新由同一io.realm.annotations.PrimaryKey标识的现有 RealmObject,如果找不到现有对象,则创建新副本。 这是深度复制或更新,即所有引用的对象都将被复制或更新。 请注意,复制对象将复制所有字段值。 如果未提供,则对象和子对象中任何未设置的字段都将设置为其默认值。 参数
返回: 新的或更新的 RealmObject 及其由 Realm 支持的所有属性。 抛出异常
|
createAllFromJson
为 JSON 数组中的每个对象创建一个 Realm 对象。 这必须在事务中完成。具有未知属性的 JSON 属性将被忽略。 如果 JSON 对象中不存在RealmObject字段,则RealmObject字段将设置为该类型的默认值。 此方法目前不支持值列表字段。 参数
抛出异常
|
createEmbeddedObject
public E createEmbeddedObject <E >( ) |
---|
实例化一个新的嵌入式对象并将其添加到 Realm。此方法只应用于创建标记为嵌入式的类型的对象。 参数
返回: 新创建的嵌入式对象。 抛出异常
|
createObject
实例化一个新对象并将其添加到已设置主键值的 Realm 中。如果该值违反了主键约束,则不会添加任何对象,并会抛出RealmException 。 模型类提供的主键默认值将被忽略。 参数
返回: 新对象。 抛出异常
|
实例化一个新对象并将其添加到Realm中。此方法仅适用于没有 @PrimaryKey 注解的模型类。 如果要创建具有主键 的对象,请改用createObject(Class, Object)或copyToRealm(RealmModel, ImportFlag...) 。 参数
返回: 新对象。 抛出异常
|
createObjectFromJson
创建一个预填充 JSON 对象数据的 Realm 对象。 这必须在事务中完成。 具有未知属性的 JSON 属性将被忽略。 如果 JSON 对象中不存在RealmObject字段,则RealmObject字段将设置为该类型的默认值。 此方法目前不支持值列表字段。 参数
返回: 创建的对象,如果未提供 JSON 数据,则为 抛出异常
|
createOrUpdateAllFromJson
尝试使用新的 JSON 数据更新由其主键标识的现有对象的列表。 如果在 Realm 中找不到现有对象,则会创建一个新对象。 这必须在事务中进行。 如果更新对象时在 JSON 中未找到某个字段,则不会更新该字段。如果创建了新的RealmObject ,但在 JSON 对象中未找到某个字段,则将为该字段分配字段类型的默认值。 此方法目前不支持值列表字段。 参数
抛出异常
|
createOrUpdateObjectFromJson
尝试使用新的 JSON 数据更新由主键定义的现有对象。 如果找不到现有对象,则 Realm 中将保存一个新对象。 这必须在事务中进行。 如果更新对象时在 JSON 中未找到某个字段,则不会更新该字段。如果创建了新的RealmObject ,但在 JSON 对象中未找到某个字段,则将为该字段分配字段类型的默认值。 此方法目前不支持值列表字段。 参数
返回: 创建或更新了域.RealmObject 。 抛出异常
|
删除
deleteRealm
从文件系统中删除 Realm 文件以及由给定RealmConfiguration指定的相关临时文件。 带有“.lock”的临时文件 扩展不会被删除。 在调用此方法之前,必须关闭所有 Realm 实例。 警告:对于同步 Realm,即使所有用户控制的 Realm 实例都已关闭,后台线程上的内部 Realm 实例也有可能未关闭。 这将产生一个 参数
返回:
抛出异常
|
executeTransaction
在 Realm 上执行给定事务。 beginTransaction()和commitTransaction()将被自动调用。 如果在事务期间引发任何异常,将调用cancelTransaction()而不是commitTransaction() 。 从 UI 线程调用此方法会抛出RealmException 异常。 这样做可能会导致丢帧甚至 ANR。 我们建议从非用户界面线程中调用此方法,或改用executeTransactionAsync(Transaction) 。 参数
抛出异常
|
executeTransactionAsync
public RealmAsyncTask executeTransactionAsync ( Realm.Transaction transaction, Realm.Transaction.OnSuccess onSuccess, Realm.Transaction.OnError onError ) |
---|
与executeTransactionAsync(Transaction)类似,但也接受 OnSuccess 和 OnError 回调。 参数
返回: 代表可取消任务的RealmAsyncTask 。 抛出异常
|
public RealmAsyncTask executeTransactionAsync ( Realm.Transaction transaction, Realm.Transaction.OnError onError ) |
---|
与executeTransactionAsync(Transaction)类似,但也接受 OnError 回调。 参数
返回: 代表可取消任务的RealmAsyncTask 。 抛出异常
|
public RealmAsyncTask executeTransactionAsync ( Realm.Transaction transaction, Realm.Transaction.OnSuccess onSuccess ) |
---|
与executeTransactionAsync(Transaction)类似,但也接受 OnSuccess回调。 参数
返回: 代表可取消任务的RealmAsyncTask 。 抛出异常
|
与executeTransaction(Transaction)类似,但在工作线程上异步运行。 参数
返回: 代表可取消任务的RealmAsyncTask 。 抛出异常
|
冻结
返回当前 Realm 的冻结快照。 可以从任何线程读取和查询此 Realm,而不会引发 IllegalStateException 。冻结的 Realm 有自己的生命周期,可以通过调用close()来关闭,但完全关闭生成冻结副本的 Realm 也会关闭冻结的 Realm。 可以照常查询冻结的数据,但尝试以任何方式更改数据或尝试注册任何侦听器都会引发 IllegalStateException 。 注意:保持大量不同版本的 Realm 活动可能会对 Realm 的文件大小产生负面影响。 为了避免这种情况,可以设置RealmConfiguration.Builder.maxNumberOfActiveVersions(long) 。 返回: 此 Realm 的冻结副本。 覆盖
|
getApplicationContext
public static Context getApplicationContext () |
---|
获取使用Realm Realm.init(Context) 或Realm .init(Context,string ) 初始化 时使用的应用程序上下文。 返回: Realm使用Realm .init(Context) 或Realm .init(Context,string ) Realm初始化 时使用的应用程序上下文;如果尚未初始化 ,则为 null。 |
getDefaultConfiguration
public static RealmConfiguration getDefaultConfiguration () |
---|
getDefaultInstance
public static Realm getDefaultInstance () |
---|
Realm 静态构造函数,返回由 setDefaultConfiguration(RealmConfiguration) 设置的 io.realm.RealmConfiguration 定义的 Realm 实例 返回: Realm 类的实例。 抛出异常
|
getDefaultModule
public static Object getDefaultModule () |
---|
返回默认 Realm 模块。 该模块包含当前项目中的所有 Realm 类,但不包括来自库或项目依赖项的类。 其中的 Realm 类应使用自己的模块公开。 返回: 默认 Realm 模块,如果默认模块不存在,则为 抛出异常
|
getGlobalInstanceCount
返回当前进程中使用此配置的所有线程中当前打开的 Realm 实例数。 这包括动态 Realm 和普通 Realm。 参数
返回: 所有线程中打开的 Realm 实例数。 |
getInstance
Realm 静态构造函数,返回由提供的io.realm.RealmConfiguration定义的 Realm 实例 参数
返回: Realm 类的实例 抛出异常
|
getInstanceAsync
public static RealmAsyncTask getInstanceAsync ( RealmConfiguration configuration, Realm.Callback callback ) |
---|
在进程中创建每个RealmConfiguration的第一个 Realm 实例可能需要一些时间,因为此时所有初始化代码都需要运行(设置 Realm、验证模式和创建初始数据)。 此方法将初始化工作放在背景线程中,并在初始化完成后将 Realm 实例异步传递给调用者线程。 参数
返回: 代表可取消任务的RealmAsyncTask 。 抛出异常
|
getLocalInstanceCount
返回调用此方法的线程上当前打开的 Realm 实例数。 这包括动态 Realm 和普通 Realm。 参数
返回: 调用者线程上打开的 Realm 实例数。 |
getSchema
public RealmSchema getSchema () |
---|
返回此Realm的模式。 模式不可变。 任何对其进行修改的尝试都会导致 UnsupportedOperationException 。 只能使用DynamicRealm.getSchema()修改模式 或通过迁移。 返回: 此 Realm 的RealmSchema 。 覆盖
|
init
初始化 Realm 库并创建可供使用的默认配置。 在与任何其他 Realm API 交互之前,必须先调用此方法。一个好的方法是在 android.app.Application 中 子类:
请记住将其注册到
参数
抛出异常
|
初始化 Realm 库并创建可供使用的默认配置。 在与任何其他 Realm API 交互之前,必须先调用此方法。一个好的方法是在 android.app.Application 中 子类:
请记住将其注册到
参数
抛出异常
|
insert
插入非托管 RealmObject。 这通常比copyToRealm(RealmModel, ImportFlag...)更快,因为它不返回插入的元素,而是执行最少的分配和检查。 插入后,对原始对象的任何更改都不会保留。 请注意:
如果您希望返回托管RealmObject ,请使用copyToRealm(RealmModel, ImportFlag...) ,否则,如果您有大量对象,此方法通常速度更快。 参数
抛出异常
|
插入非托管 RealmObject 的列表。 这通常比copyToRealm(Iterable, ImportFlag...)更快,因为它不返回插入的元素,并执行最少的分配和检查。 插入后,对原始对象的任何更改都不会保留。 请注意:
如果您希望返回托管RealmObject ,请使用copyToRealm(Iterable, ImportFlag...) ,否则,如果您有大量对象,此方法通常速度更快。 参数
抛出异常
|
insertOrUpdate
插入或更新非托管 RealmObject。 这通常比copyToRealmOrUpdate(RealmModel, ImportFlag...)更快,因为它不返回插入的元素,而是执行最少的分配和检查。 插入后,对原始对象的任何更改都不会保留。 请注意:
如果您希望返回托管RealmObject ,请使用copyToRealm(RealmModel, ImportFlag...) ,否则,如果您有大量对象,此方法通常速度更快。 参数
抛出异常
|
插入或更新非托管 RealmObject 列表。 这通常比copyToRealmOrUpdate(Iterable, ImportFlag...)更快,因为它不返回插入的元素,并执行最少的分配和检查。 插入后,对原始对象的任何更改都不会保留。 请注意:
如果您希望返回托管RealmObject ,请使用copyToRealm(Iterable, ImportFlag...) ,否则,如果您有大量对象,此方法通常速度更快。 参数
抛出异常
|
isEmpty
public boolean isEmpty () |
---|
migrateRealm
手动Atlas Triggers RealmMigration 上的迁移。 参数
抛出异常
|
手动Atlas Triggers与给定 RealmConfiguration 关联的迁移。如果 Realm 已经是最新版本,则不会发生任何情况。 参数
抛出异常
|
删除所有变更监听器
public void removeAllChangeListeners () |
---|
removeChangeListener
删除指定的变更侦听器。 参数
抛出异常
|
removeDefaultConfiguration
public static void removeDefaultConfiguration () |
---|
删除当前默认配置(如有)。 在使用 setDefaultConfiguration(RealmConfiguration) 设置新的默认配置之前,对 getDefaultInstance() 的任何进一步调用都将失败。 |
setDefaultConfiguration
设置io. 域.RealmConfiguration在调用getDefaultInstance()时使用。 参数
抛出异常
|
WHERE
返回类型化 RealmQuery,可用于查询该类型的特定对象 参数
返回: 类型化 RealmQuery,可用于查询该类型的特定对象。 |