序列化静态内部类java

问题描述 投票:0回答:1

我目前正在用 Java 制作一个游戏,目前我计划如何处理 NPC,让每个 NPC 成为他们自己独特类的实例,所有这些都继承自抽象 NPC 类。

例如,如果我有一个名为“Michael”的角色,Michael 将是 Michael 类的实例,该类将从 NPC 继承。

当我进行设置时,我突然想到,也许我可以将所有 NPC 类定义为 NPC 类主体中的静态类,主要是因为这样我将只有 NPC.java 文件,而不是 NPC.java 文件。一堆 Michael.java、John.java 等

所以这看起来像

public abstract class NPC implements Seralizable {

   //stuff

   public static class Michael extends NPC {

      //more stuff

   } 

}

当我需要在游戏中创建迈克尔的实例时,它看起来像

NPC npc1 = NPC.Michael();

正如你在上面看到的,NPC 实现了可序列化,这样我就可以将游戏状态保存到文件中。我目前主要关心的是这些内部静态类是否会对序列化做任何有趣的事情,因为静态字段都是瞬态的。

如果人们通常更喜欢将类放在自己的文件中,我也希望获得有关这种组织代码风格的反馈

java oop static static-classes
1个回答
1
投票

静态内部类除了命名方式之外,在所有方面都与顶级类相同。它们是否序列化完全独立于它们所在的类。之间没有任何区别:

--- Michael.java:

public class Michael extends Npc { ... }

--- Npc.java

public class Npc implements Serializable { .... }

---- Npc.java

public class Npc implements Serializable {
  public static class Michael extends Npc { .... }
}

如果

Michael
不会包含任何自定义代码(仅继承于
Npc
但不定义任何不同或新的内容),Michael 不应该是它自己的类。

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