java中无getter的瞬态变量

java中无getter的瞬态变量,java,serializable,transient,Java,Serializable,Transient,如果基类(实现可序列化)和扩展它的子类中有瞬态变量,我知道子类也会自动序列化,但基类对象中是否仍然需要getter。我让我的VAR暂时化并移除了getter,得到了一个PropertyNotFoundException,所以我想我在回答我自己的问题。只是想知道是否有其他方法不必将getter包含在base中。您将一些独立的问题混为一谈: 通常,如果一个字段被声明为transient,则不需要为它声明getter和setter 一般来说,如果您要使用依赖于JavaBeans约定的各种框架(例如Sp

如果基类(实现可序列化)和扩展它的子类中有瞬态变量,我知道子类也会自动序列化,但基类对象中是否仍然需要getter。我让我的VAR暂时化并移除了getter,得到了一个PropertyNotFoundException,所以我想我在回答我自己的问题。只是想知道是否有其他方法不必将getter包含在base中。

您将一些独立的问题混为一谈:

  • 通常,如果一个字段被声明为
    transient
    ,则不需要为它声明getter和setter

  • 一般来说,如果您要使用依赖于JavaBeans约定的各种框架(例如Spring DI、JPA/Hibernate、JSP(etc)EL表达式语言、JAXR等等),那么您确实需要实现getter和(如果需要)setter

  • 如果您使用的持久性机制需要getter或setter,那么它们是必需的。但是标准Java对象序列化机制不需要这样做。(它根本不使用getter和setter。)

  • 通常,您不需要仅仅因为涉及继承就需要getter和setter

  • 您还没有说明是什么引发了
    PropertyNotFoundException
    ,甚至没有给出它的完整类名,因此我们无法告诉您是否有任何替代方法不涉及添加getter和setter。然而,添加getter和setter可能是最简单、最面向对象的解决方案。有关说明,请参见“”


    注意,如果您被卡住了,并且无法修改声明这些字段的父类,那么您可以尝试在子类中添加getter和setter。这可能有用。。。取决于框架的实现方式

    不清楚您想要实现什么只是想拥有一些类似私有瞬态字符串myName的东西;但却没有足够的动力。我的假设是,如果一个字段是暂时的,它将不会被序列化并使用它的原始默认值,但它看起来也需要getter。getter绝对不是必需的。这个PropertyNotFoundException是什么?你说的是
    transient
    关键字()还是JavaBeans
    transient
    annotation()?getter与java序列化没有任何关系,通过你标记问题的
    Serializable
    接口。
    PropertyNotFoundException
    。不清楚你在问什么,我道歉。我太匆忙了,没有提供足够的细节。仅供参考,异常来自一个BeanResolver,它位于一个我在更改JSP时错过的字段上。我再次表示歉意,今后不会匆忙做这些事情。