Map <String,Serializable>是什么意思?

Jav*_*Fan 3 java serialization

有人能解释一下是什么Map<String, Serializable>意思吗?我知道Map必须有键值对,而且我习惯于看到<String, String> <Integer, whatever>,但我从未见过该Serializable类型的值.我也理解这Serializable是在磁盘/网络上将对象写入字节的过程.但是当我们使用时,这一切又如何加起来Map<String, Serializable>?它归结为什么?

我可以将任何对象放入Serializable类型的值中,或者它必须是某个特殊对象或其他东西吗?有人能解开一些光吗?

Jor*_*lla 14

我也理解这Serializable是在磁盘/网络上将对象写入字节的过程.但是当我们使用时,这一切又如何加起来Map<String, Serializable>

Serializable 是一个Java接口:

来自API:

  • 实现java.io.Serializable接口的类启用了类的可序列化.
  • 未实现此接口的类将不会将其任何状态序列化或反序列化.
  • 序列化接口没有方法或字段,仅用于标识可序列化的语义.

我可以将任何对象放入类型的值中,Serializable或者它必须是某些特殊对象或其他东西吗?

  • 可序列化类的所有子类型本身都是可序列化的.

有人能解释一下是什么Map<String, Serializable>意思吗?

这意味着你将拥有一个String键和一个值,它必须是一个实现的对象Serializable.

例如:

// valid object for the map
class Bar implements Serializable {
    private static final long serialVersionUID = 1L;

    // class stuff
}

// not a candidate
class Foo {
    // class stuff
}
Run Code Online (Sandbox Code Playgroud)

然后:

Map<String, Serializable> myMap = new HashMap<String, Serializable>();
Bar bar = new Bar();
map.put("BAR", bar); // this is ok
Foo foo = new Foo();
map.put("FOO", foo); 
// The method put(String, Serializable) in the type HashMap<String,Serializable> 
// is not applicable for the arguments (String, Foo)
Run Code Online (Sandbox Code Playgroud)