Lav*_*ari 2 java jgrapht serializable
从这里开始,JGraphT 的Pair类是Serializable。但该类包含的实例成员(first和second)不是强制的Serializable。
当前的实现如下所示:
public class Pair<A, B>
implements
Serializable
Run Code Online (Sandbox Code Playgroud)
我认为应该是这样的:
public class Pair<A extends Serializable, B extends Serializable>
implements
Serializable
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?如果不是,那么为什么 JGraphT 不这样做呢?
因为Serializable仅在运行时相关。
如果您想使用带有不可序列化元素的对,它会起作用,但如果尝试序列化将会失败。但是,如果两个元素都是,Serializable那么无论通用边界如何,它们都将序列化。
Pair<A extends Serializable, B extends Serializable> implements Serializable=> 始终可序列化,但无法用于不可序列化A/BPair<A, B> implements Serializable=> 如果A且B恰好Serializable在运行时期间可序列化,但不保证任何给定的Pair.Pair<A, B>/ Pair<A extends Serializable, B extends Serializable>=> 无论类型参数如何,都永远不会被序列化,因为容器本身不是Serializable。