jjzjj

Serializable

全部标签

c# - .net 中 DataContract 属性和 Serializable 属性之间的区别

我正在尝试使用以下方法创建对象的深度克隆。publicstaticTDeepClone(thisTtarget){using(MemoryStreamstream=newMemoryStream()){BinaryFormatterformatter=newBinaryFormatter();formatter.Serialize(stream,target);stream.Position=0;return(T)formatter.Deserialize(stream);}}此方法需要一个序列化的对象,即具有“可序列化”属性的类的对象。我有一个具有属性“DataContract”的类

c# - 为什么必须用属性 [serializable] 标记一个类?

因为您可以将任何文档转换为字节数组并将其保存到磁盘,然后将文件重建为其原始形式(只要您有其文件名等的元数据)。为什么必须用[Serializable]等标记一个类?这是否只是相同的想法,“元数据”类型信息,所以当您将对象转换为它的类时,事物会被正确映射? 最佳答案 二进制序列化非常强大,它可以在不运行构造函数的情况下创建类的实例,并且可以在您声明为私有(private)的类中设置字段。常规代码当然不能这样做。通过应用[Serializable]属性,您可以明确允许它扰乱您的隐私部分。并且您隐式地只将该权限授予BinaryFormat

c# - 为什么 XmlSerializer 不需要将类型标记为 [Serializable]?

在C#中,如果我想用XmlSerializer序列化一个实例,对象的类型不必用[Serializable]属性标记。但是,对于其他序列化方法,例如DataContractSerializer,需要将类标记为[Serializable]或[DataContract]。序列化要求是否有标准或模式? 最佳答案 这是因为XmlSerializer只序列化公共(public)字段/属性。其他形式的序列化可以序列化私有(private)数据,这构成了潜在的安全风险,因此您必须使用属性“选择加入”。

javascript - 为什么我的 Redux store 应该是可序列化的?

在阅读redux文档时我发现了这个:Still,youshoulddoyourbesttokeepthestateserializable.Don'tputanythinginsideitthatyoucan'teasilyturnintoJSON.所以我的问题是,保持状态可序列化有什么好处?或者,如果我将不可序列化的数据放入存储中,我可能会遇到什么困难?而且我相信这不是redux独有的-Flux,甚至React本地状态也暗示了同样的事情。为了让我清楚这里是一个例子。假设商店结构是这样的。{books:{1:{id:1,name:"Book1",author_id:4}},author

java - 将可序列化引入现有代码

我相信这应该是一个非常常见的案例,但我找不到任何最佳实践。假设我有以下类(class):publicclassEquation{privateOperatoroperator;privateObjectleftValue;privateObjectrightValue;//gettersandsetters}publicenumOperator{...}这个类(class)已经存在多年,并且使用得很好。现在我需要让它可序列化。我该怎么做?只需添加implementsSerializable在这种情况下,Equation类仅在值是Serializable时才有效。因为方程式只对可能有效的

java - 为什么可以在 Java 中通过引用来比较不兼容的类型?

看看这个片段:Listc=newArrayList();Mapm=newHashMap();if(c==m)//noerrorhere!WHY?{c=m;//"Incompatibletypes"error,asexpected.m=c;//"Incompatibletypes"error,asexpected.}c==m为什么没有报错?我使用的是jdk1.8.0.20的javac,我没有理由怀疑它无视java语言规范,所以这在规范中具有相当绝对的确定性,所以:规范允许这样的事情有什么意义/目的/用处? 最佳答案 仅仅因为类型不可转

java - serialVersionUID 命名约定

serialVersionUID字段未命名为SERIAL_VERSION_UID是否有任何可行的原因?根据java.io.Serializable的文档:AserializableclasscandeclareitsownserialVersionUIDexplicitlybydeclaringafieldnamed"serialVersionUID"thatmustbestatic,final,andoftypelong:ANY-ACCESS-MODIFIERstaticfinallongserialVersionUID=42L;同时引用JavaNamingConventions所有

java - 为什么AtomicInteger要实现Serializable

根据javadoc,publicclassAtomicIntegerextendsNumberimplementsjava.io.Serializable{//codeforclass}但是,publicabstractclassNumberimplementsjava.io.Serializable{//codeforclass}如果Number类已经实现了java.io.Serializable那么为什么AtomicInteger还要再次实现它?编辑:Serializable作为标记接口(interface)在这种情况下有什么不同吗? 最佳答案

java - 为什么POJO类需要实现Serializable接口(interface)?

为什么POJOJava类必须实现Serializable接口(interface)?如果我不实现Serializable会发生什么?@Entity@Table(name="Customer")publicclassCustomerimplementsSerializable{privatestaticfinallongserialVersionUID=-5294188737237640015L;/***HoldsCustomeridofthecustomer*/@Id@GeneratedValue(strategy=GenerationType.AUTO)@Column(name="c

java - 在java中,是否可以将Serializable接口(interface)添加到运行时没有它的类中?

有一个类我想序列化,它实现了Serializable,但是它包含的对象之一没有实现Serializable。有没有办法在运行时修改类,使其实现Serializable接口(interface),以便我可以序列化它?我无法在编译时更改它,因为它是第三方库。也许我必须使用某种字节码编写器或其他东西?编辑:包含类和包含类都在第3方库中,所以我不认为我可以将某些东西标记为transient。包含类被标记为可序列化,但它包含一个不可序列化的对象。我可以为该类编写自定义序列化方法,但不确定我将如何做到这一点,我是否必须使用反射来获取私有(private)变量的值? 最佳