有人可以解释Map<String, Serializable>
的含义吗?我知道地图必须有键值对,我习惯看到<String, String>
<Integer, whatever>
,但我从未见过Serializable
类型的值。我也明白Serializable
是在磁盘/网络上将对象写入字节的过程。但是当我们使用Map<String, Serializable>
时,这一切如何加起来?它归结为什么?
我可以将任何对象放入Serializable类型的值中,还是必须是某些特殊对象或其他对象?有人能解开一些光吗?
答案 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类就不会非常动态。