问题标签 [transient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
966 浏览

grails - Grails domainClasses 获取瞬态属性

GrailsDomainClass 类有两种方法:getPropertiesgetPersistentProperties

我有一个域类 ( MyDomainClass),其中包括:

好的,我采用了默认索引页面并对其进行了修改以列出所有属性MyDomainClass

行。这行得通,但它没有得到任何瞬态属性。我已经尝试过 d.properties 和 d.persistantProperties ,它们似乎给了我相同的结果。在此先感谢您的帮助!!

我需要称它为 getComputeStuff 吗?

我现在已经更改了我的域类以包含它,但仍然没有取回瞬态 computeStuff

这似乎没有任何区别。

0 投票
7 回答
27251 浏览

java - Java静态序列化规则?

我正在使用一些静态方法和字段进行保存状态序列化。我可以发誓虽然序列化和静态造成了混乱。我应该使所有静态的瞬态?并且膨胀呼叫会恢复正常的静态吗?

0 投票
1 回答
900 浏览

java - XJC 非瞬态不可序列化实例字段数据

生成 java 类后,我收到:

FindBugs 警告说 myClass 定义了非瞬态不可序列化的实例字段数据。警告是否可以接受或需要修复?谢谢。

0 投票
2 回答
703 浏览

oop - Matlab OOP 在保存瞬态属性时调用 get 方法。

我正在尝试实现一个具有可能提供给构造函数或可能以其他方法生成的属性的类。我不希望将数据保存到磁盘或在加载时生成。到目前为止,我所拥有的是:

问题是当我尝试将对象保存到磁盘时,Matlab 调用 get.ProblemProperty 方法(通过仅在保存语句上运行分析器来确认)。ProblemProperty 字段为空,我希望它保持这种状态。它不调用 get.Property5 方法。

如何避免调用 get.ProblemProperty?

0 投票
1 回答
133 浏览

castle-windsor - 温莎组件不能作为瞬态工作

我们正在使用 windsor 为IUnitOfWork接口注册一个实例。UnitOfWorkContainer.Current是一个返回 IUnitOfWork 实例的静态方法。

问题是UnitOfWorkContainer.Current只有一个。

0 投票
3 回答
2020 浏览

apache-flex - Flex blazeds/lcds 瞬态变量的 AMF 序列化

我正在使用 LCDS 和 Flex。当我将一个对象从 java 发送到 Flex 时,我不想发送所有属性。据我所知,如果您不想序列化,请制作一个临时变量。

例如。

现在序列化的对象中不应该有birthDate。但是,当我看到 AMF 日志时,该对象的birthDate 中有值。
序列化是否查看代码并检查私有变量是瞬态的。(我不明白它如何访问私有属性。我有点困惑。)
我应该将变量标记为公共的吗?然后 getter 和 setter 没有意义,而且我在 setter 方法中编写了一些代码。所以我需要二传手。

问题:

  1. 我在一本书(Brain Telintelo 的 Enterprise flex with blazeds,第 15 章)中读到,开箱即用的 Blazeds 仅序列化具有匹配的 getter 和 setter 的文件。如果是这样的话,will blazeds 甚至会费心去检查私有财产是否是暂时的。

  2. 有人可以解释一下正常的序列化(不是 amf 序列化)如何发生并跟踪私有瞬态变量,即使它们有公共的 getter 和 setter。

  3. 如何在 Flex/LCDS/BlazeDS 环境中使 java 变量不序列化。

我在对象中有 50-60 个变量,不应该对 4 或 5 个变量进行序列化。所以在这么大的对象中编写自定义序列化器是一个很大的痛苦。我看到的另一个缺点是,如果我编写自己的序列化程序,休眠将无法使用此对象。

0 投票
1 回答
1207 浏览

iphone - 在 Core-Data 中使用瞬态属性

我不确定使用瞬态属性是否适合我的情况。我正在从服务器获取某种提要并存储在核心数据中。我在 TableView 中显示所有这些提要。提要有多种类型,因此单元格布局和子视图随每个提要而变化。在某些提要中,我需要设置一个临时变量(BOOL 和整数。所以我知道 NSNumber)。用例是,用户应该能够放大和折叠一些单元格(一种“阅读更多..”链接)。所以这种状态,我需要与每个 feed(NSManagedObject) 对象保持一致。在应用程序运行之前,此状态将一直存在。它不应该保存到持久存储中,因为当用户打开应用程序时,所有提要都应该是新鲜的。

我刚刚添加了带有瞬态的属性,但它似乎不起作用。我在实体中添加了“NSNumber selected”属性作为瞬态,并在 NSManagedObject 文件中添加了属性和@dynamic。我搜索了论坛,没有解决方案与我的匹配。我尝试了很多样品,但它真的很混乱..

接口文件是,

实施文件是,

所以请帮我解决这个问题。

0 投票
1 回答
243 浏览

transient - Hyperjaxb 动态应用瞬态

目前,我可以使用瞬态功能指示 Hyberjaxb 在编译时不将节点保留在 xml 对象中。无论如何在运行时动态应用它?如果x=y,则在 xml 对象中持久化特定节点,否则不持久化。

是否有另一种策略来处理这个问题?

0 投票
1 回答
13142 浏览

iphone - 需要一些帮助来理解 Core Data 中的瞬态属性

我阅读了有关瞬态属性的文档,但我无法真正理解它们的目的。如果我有一个像这样的 NSManagedObject 的自定义子类,有人能告诉我有没有瞬态属性的区别吗?

因此,pieces 和 grid 提供了两种访问相同数据的方法。pieces 是实际的 Core Data 关系属性,是所有片段的密集列表。网格是一种在 (x, y) 坐标寻址的板上查找特定空间内容的方法。当一块改变位置时,网格会延迟构建并更新(只要它存在)。

我没有将网格声明为瞬态属性,并且一切正常。我只是想知道如果我不声明瞬态属性,是否会出现一些不寻常的情况会导致错误。

如果您正在执行这样的派生属性,我认为我需要读取瞬态属性才能获得正确的撤消行为。我没有使用撤消,无论如何我看不出它在这种情况下如何工作。如果一块移动被撤消,撤消管理器可以将 _grid 的旧值分配回它(可能假设我没有将其设为只读),但旧值与新值相同。它是指向同一个 NSMutableArray 实例的指针,只是内容发生了变化。无论如何,我不使用撤消。

那么,如果我将网格声明为瞬态属性,我会得到什么好处吗?

附加问题。如果我有这样的代码怎么办:

访问 someOtherManagedObject.board 后,板子是否可能出现故障?我也很难理解错误。我认为在那种情况下我的代码会崩溃。我注意到 awake 将 _grid 设置为 nil。我认为顺序应该是这样的:

  1. 称为网格吸气剂
  2. _grid 已分配
  3. 访问的self.pieces
  4. 故障火灾
  5. 叫醒
  6. _grid = nil
  7. 返回网格吸气剂
  8. [[_grid objectAtIndex:...访问 nil 值、崩溃或至少无操作
  9. 网格 getter 返回 nil
  10. 当 boardContents 应该包含一个值时崩溃或不正确的行为

另一方面,也许如果我声明网格是一个瞬态属性,那么在调用我的网格吸气剂之前故障会触发?

来自 TechZen:

故障是定义具有关系的对象图但不加载属性值的占位符对象。它们将作为 NSManagedObject 或私有 _NSFault... 类的实例进行记录。

因为未建模的属性只是自定义 NSManagedObject 子类的属性而不是实体,所以故障对象对它们一无所知。故障对象从数据模型初始化,因此它们响应的所有键都必须在数据模型中。这意味着故障将无法可靠地响应对未建模属性的请求。

等什么?我开始意识到我的对象在任何时候都可能是错误的,但你是在告诉我它们甚至可能不是我班级的实例!?或者,如果您使用自定义子类,它们是否保证是 NSManagedObject 实例(特别是我的子类)的错误?

如果它们不是自定义类的实例,那么会发生这样的事情:

如果我在故障上调用 doSomething 会发生什么?

  1. 不响应选择器,崩溃
  2. 运行我的代码,但是我的实例变量不存在,谁知道当它执行 data++ 时会发生什么
  3. data 存在,只是 modeledProperty 不存在,因为它是一个错误

瞬态属性解决了这个问题。瞬态属性提供了上下文可以观察而无需保存的键。如果您有故障,向其发送瞬态属性的键值消息将触发上下文“触发”故障并加载完整的托管对象。

好的,但是如果我有一个不是属性访问器的实例方法,比如上面的 doSomething 呢?在调用它之前如何确保我有一个真实的对象?或者我可以调用它,并且在方法主体中首先确保我有一个真实的对象(例如通过访问建模属性)?

在您的情况下,如果 grid 的值取决于 Board 类的任何建模属性的值,则您希望对 grid 使用瞬态属性。这是保证在您访问网格时始终填充网格的唯一方法。

我认为如果它依赖于建模属性的值,那么它会在依赖于它们时触发故障,即该行for (PieceState *piece in self.pieces)触发故障是因为它访问了 self.pieces,这是一个建模属性。但你告诉我哪个?

  1. 我什至不能在故障上调用网格 getter 方法
  2. 我可以调用它,但我不能以我想要的方式使用 _grid

看来,如果我理解您的意思并且确实如此, NSManagedObject 的自定义子类非常有限。

  1. 它们不能有任何不是建模属性 getter 或 setter 的实例方法,因为不能保证对象在调用时处于可用状态。(例外:只是属性访问器的辅助方法的实例方法会很好。)
  2. 除了计算值的临时缓存之外,它们不能有任何用于任何有用目的的实例变量,因为这些实例变量可能随时被删除。我知道它们不会保留在磁盘上,但我认为只要我将对象保留在内存中,它们至少会保留。

如果是这种情况,那么您不打算将应用程序逻辑放在您的自定义 NSManagedObject 子类中吗?应用程序逻辑是否应该驻留在对托管对象具有引用的其他类中,并且托管对象只是您读取和写入的哑对象(只是有点聪明,具有保持数据一致性的一些功能)?将 NSManagedObject 子类化以使用非标准数据类型做一些“技巧”的唯一要点是什么?

0 投票
1 回答
1729 浏览

testing - 是否可以在测试中模拟瞬态场?

我有一个包含瞬态字段的类。但是该类的另一部分是可序列化的。在测试中,我模拟了字段和类,并在深拷贝函数中使用了模拟的类对象,如下所示:

writeObject(original) 方法应该写入所有非瞬态和非静态字段。但是我有一个错误,说模拟瞬态字段的 java.io.NotSerializableException 。我想知道在测试中是否无法识别瞬态场?我使用 mockito 作为我的框架。