Java 最终静态字段序列化

Java 最终静态字段序列化,java,serialization,interface,static,final,Java,Serialization,Interface,Static,Final,最近,我一直在读关于序列化的文章,所有的事情看起来都很容易理解。带有final关键字的值被序列化,静态值不被序列化,在静态瞬态中,瞬态被忽略,依此类推。我读过几乎所有的东西,但我有一个问题,我找不到答案,无论是在google还是在Stack Overflow上: 当数据是静态最终数据时会发生什么?其中哪一个战胜了另一个?例如: 接口Foo{ int value=10;//默认为公共静态final } 如果在我的任何类中实现该接口的值,那么该接口的值将如何序列化?是否将其视为最终版或静态版 st

最近,我一直在读关于序列化的文章,所有的事情看起来都很容易理解。带有
final
关键字的值被序列化,
静态
值不被序列化,在
静态瞬态
中,
瞬态
被忽略,依此类推。我读过几乎所有的东西,但我有一个问题,我找不到答案,无论是在google还是在Stack Overflow上:

当数据是静态最终数据时会发生什么?其中哪一个战胜了另一个?例如:

接口Foo{
int value=10;//默认为公共静态final
}

如果在我的任何类中实现该接口的值,那么该接口的值将如何序列化?是否将其视为
最终版
静态版

static final变量不会被序列化,因为与static变量一样,它是独立于实例的类变量。final修饰符仅说明,一旦分配了变量,就不能再对其进行更改

静态final变量将不会序列化,因为与静态变量一样,它是独立于实例的类变量。final修饰符仅表示一旦分配了变量,就不能再对其进行更改

final
并不意味着它将被序列化(或不序列化)。如前所述:“类的默认可序列化字段定义为非瞬态和非静态字段。”(请参阅)从您的问题的角度来看,
static
被使用/具有优先权。。。因为
final
与序列化没有/几乎没有关系<代码>静态值未序列化。@user85421您的回答帮助了我。在某个地方,我读到最后的字段是序列化的,似乎我误解了什么。如果我现在理解正确的话。静态最终值=10将不会被序列化。
final
并不意味着它将被序列化(或不被序列化)。如前所述:“类的默认可序列化字段定义为非瞬态和非静态字段。”(请参阅)从您的问题的角度来看,
static
被使用/具有优先权。。。因为
final
与序列化没有/几乎没有关系<代码>静态值未序列化。@user85421您的回答帮助了我。在某个地方,我读到最后的字段是序列化的,似乎我误解了什么。如果我现在理解正确的话。静态最终值=10将不会被序列化。
final
不是那么简单(但对于给定的上下文是可以的);“一个空白的最终类变量必须由静态初始值设定项明确赋值…一个空白的最终实例变量必须在声明它的类的每个构造函数结尾处明确赋值,而且不能明确取消赋值”@Vito我的问题和你的答案不匹配。我问的完全不同thing@Anuka您没有问过“当数据是静态最终变量时会发生什么?”那么“静态最终变量不会被序列化”不是一个答案吗?完全不同???
final
并不是那么简单(但对于给定的上下文来说还行);“一个空白的最终类变量必须由静态初始值设定项明确赋值…一个空白的最终实例变量必须在声明它的类的每个构造函数结尾处明确赋值,而且不能明确取消赋值”@Vito我的问题和你的答案不匹配。我问的完全不同thing@Anuka您没有问过“当数据是静态最终变量时会发生什么?”那么“静态最终变量不会被序列化”不是一个答案吗?完全不同??