Java中没有getter的瞬态变量[关闭]

问题描述 投票:-3回答:1
如果我在基类(可序列化的实现)和扩展它的子类中具有瞬态变量,我知道子类也会自动序列化,但是在基对象中仍需要使用吸气剂。我使我的vars瞬态并删除了吸气剂,并得到了PropertyNotFoundException,所以我想我正在回答自己的问题。只是想知道是否还有另一种方法不必在基础中包含获取器。
java serializable transient
1个回答
1
投票
您正在混淆许多独立的问题:

  1. 通常,如果将字段声明为transient,则没有特别需要为其声明getter和setter的方法。
  2. 通常,如果您要使用依赖JavaBean约定的各种框架(例如Spring DI,例如JPA / Hibernate,JSP(等)EL表达式语言,JAXRS等),那么您确实需要实现getter和(如果需要的话)setter。
  3. 如果使用的持久性机制需要getter或setter,则它们是必需的。但是标准的Java对象序列化机制不需要这样做。 (它根本不使用getter和setter方法。)
  4. 通常,仅因为涉及继承,就不需要getter和setter。

您尚未说出引发PropertyNotFoundException的内容,甚至没有给出完整的类名,因此我们无法告诉您是否存在不涉及添加getter和setter的替代方法。但是,添加getter和setter可能是最简单,最面向对象的解决方案。有关说明,请参见“ Why use getters and setters/accessors?”。

请注意,如果您陷入困境,并且不能修改声明这些字段的父类,那么您[[可以尝试在子类中添加getter和setters。它可能起作用...取决于框架的实现方式。

© www.soinside.com 2019 - 2024. All rights reserved.