Map <string,serializable =“”>是什么意思?

时间:2015-11-16 16:45:11

标签: java serialization

有人可以解释Map<String, Serializable>的含义吗?我知道地图必须有键值对,我习惯看到<String, String> <Integer, whatever>,但我从未见过Serializable类型的值。我也明白Serializable是在磁盘/网络上将对象写入字节的过程。但是当我们使用Map<String, Serializable>时,这一切如何加起来?它归结为什么?

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

4 个答案:

答案 0 :(得分:14)

  

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

Serializable是一个Java接口:

FROM 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
}

然后:

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)

答案 1 :(得分:1)

String是键,Serializable是值。它是一个可以在整个集群中序列化和传输的对象(使用给定的SerDe)。

答案 2 :(得分:1)

Serializable是一个界面。

这意味着地图的值是实现Serializable接口

的类

这也意味着get()方法返回的obgect的静态类型将是可序列化的

答案 3 :(得分:0)

Map是一种称为模板类的东西(或Java中使用的泛型类型),请参阅this。 Map类在它的模板上有两个类,只要它们匹配一些perquisites,它就可以是任何东西。这里的Key只是一个String,Value是一个实现Serializable的类。如果它只支持(基类)String类,那么map类就不会非常动态。