标签: serializable

Android 13 (SDK 33):Bundle.getSerialized(String) 已弃用,有什么替代方案?

从 API 级别 33 开始,getSerializable(String)不推荐使用 Bundle 类的方法。文档建议改为使用getSerializable(String, Class)。但该功能仅适用于 API 级别 33。

我当前的代码:

val model = args.getSerializable("key") as? Model
Run Code Online (Sandbox Code Playgroud)

现在应该是这样吗?

val model = args.customGetSerializable<Model>("key")

@Suppress("DEPRECATION")
inline fun <reified T : Serializable> Bundle.customGetSerializable(key: String): T? {
    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        getSerializable(key, T::class.java)
    } else {
        getSerializable(key) as? T
    }
}
Run Code Online (Sandbox Code Playgroud)

android bundle serializable kotlin

21
推荐指数
1
解决办法
1万
查看次数

使用事件序列化类

我有一个这样的类:

public delegate void ChangedEventHandler(object sender, EventArgs e);
[Serializable]
public class valueDouble
{
    public event ChangedEventHandler Changed;
    public double value
    {
        get { return _value; }
        set 
        {
            _value = value;
            if (Changed != null)
            {
                Changed(this, EventArgs.Empty);
            }
        }
    }
    private double _value = 0;
}
Run Code Online (Sandbox Code Playgroud)

我还有另一个Class(StepPulseblaster),它不是可序列化的,并添加了一个事件处理程序

valDouble.Changed += new ChangedEventHandler(sc_PropertyChanged);
Run Code Online (Sandbox Code Playgroud)

当我尝试序列化valueDouble类时,会出现错误:

The Type StepPulseblaster is not marked as serializable
Run Code Online (Sandbox Code Playgroud)

当我评论这条线

valDouble.Changed += ...
Run Code Online (Sandbox Code Playgroud)

不会再有任何错误了.

如何序列化连接了某些事件的类?

c# events serialization class serializable

20
推荐指数
3
解决办法
9514
查看次数

什么是可序列化的对象?

什么是C#中的可序列化对象?我想serializable一词比"序列化对象"更让我失望.

c# serializable

19
推荐指数
2
解决办法
9086
查看次数

序列化对象的文件扩展名

Serializable对象保存到磁盘时,哪种文件扩展名最合适?

FileOutputStream fos = null;
ObjectOutputStream out = null;
try {
    fos = new FileOutputStream(filename);
    out = new ObjectOutputStream(fos);
    out.writeObject(mySerializableObject);
} catch (IOException ex) {
    ex.printStackTrace();
} finally {
    IOUtils.closeQuietly(out);
}
Run Code Online (Sandbox Code Playgroud)

java filenames serialization serializable

18
推荐指数
1
解决办法
2万
查看次数

谁实际实现了可序列化方法?

我一直在学习如何使用Serializable.

我知道如果我创建一个具有不同变量的类'A' Serializable并且我添加Serializable到我的类中,它也是Serializable.

但是,实际上是谁实现了这两种方法来序列化?是否Object需要处理所有事情或不同类别在必要时重载它们?

java serializable

16
推荐指数
2
解决办法
1万
查看次数

Java Serialization是否适用于循环引用?

例如:对象A包含包含对象C的对象B,对象C包含对象A.

对象A序列化是否正确?

这里的注释#9 表示它不起作用.

相反,XStream表示它确实处理循环引用.

java serialization serializable

16
推荐指数
2
解决办法
9749
查看次数

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

看到您可以将任何文档转换为字节数组并将其保存到磁盘,然后将文件重建为其原始格式(只要您的文件名包含元数据等).

你为什么要用等级来标记一个班级[Serializable]?这是一个相同的想法,"元数据"类型信息,所以当你将对象转换为它的类时,事物是否正确映射?

c# serialization attributes serializable

15
推荐指数
2
解决办法
1万
查看次数

Java中的可序列化,可复制和内存使用

我正在使用一个内部类,它是HashMap的子类.我有一个String关键和double[]价值观.我每次存储约200个双打double[].我应该使用大约700 MB来存储密钥,指针和双打.然而,内存分析显示我需要更多(略多于2 GB).

使用TIJmp(分析工具)我看到有一个char[]使用了几乎一半的总内存.TIJmp表示char[]来自SerializableCloneable.其中的值范围从字体列表和消息和单个字符的默认路径.

SerializableJVM中的确切行为是什么?它是否始终保持"持久"副本,从而使我的内存占用量增加一倍?如何在运行时编写对象的二进制副本而无需将JVM转换为内存占用?

PS:内存消耗增加最多的方法是下面的方法.该文件每行大约有229,000行和202个字段.

public void readThetas(String filename) throws Exception
{
    long t1 = System.currentTimeMillis();
    documents = new HashMapX<String,double[]>(); //Document names to indices.
    Scanner s = new Scanner(new File(filename));
    int docIndex = 0;
    if (s.hasNextLine())
        System.out.println(s.nextLine()); // Consume useless first line :)
    while(s.hasNextLine())
    {
        String[] fields = s.nextLine().split("\\s+");
        String docName = fields[1];
        numTopics = fields.length/2-1;
        double[] thetas = new double[numTopics];
        for …
Run Code Online (Sandbox Code Playgroud)

java memory heap serializable cloneable

14
推荐指数
2
解决办法
2280
查看次数

为什么PostgreSQL可序列化的交易认为这是冲突?

在我的理解中,PostgreSQL使用某种监视器来猜测可序列化隔离级别是否存在冲突.许多示例都是关于在并发事务中修改相同资源,并且可序列化事务很有效.但我想以另一种方式测试并发问题.

我决定测试2个用户修改他们自己的帐户余额,并希望PostgreSQL足够智能,不会将其检测为冲突,但结果不是我想要的.

下面是我的表,有4个帐户属于2个用户,每个用户都有一个支票帐户和一个储蓄帐户.

create table accounts (
  id serial primary key,
  user_id int,
  type varchar,
  balance numeric
);

insert into accounts (user_id, type, balance) values
  (1, 'checking', 1000),
  (1, 'saving', 1000),
  (2, 'checking', 1000),
  (2, 'saving', 1000);
Run Code Online (Sandbox Code Playgroud)

表数据是这样的:

 id | user_id |   type   | balance
----+---------+----------+---------
  1 |       1 | checking |    1000
  2 |       1 | saving   |    1000
  3 |       2 | checking |    1000
  4 |       2 | saving   |    1000
Run Code Online (Sandbox Code Playgroud)

现在我为2个用户运行2个并发事务.在每笔交易中,我用一些钱减少支票账户,并检查用户的总余额.如果它大于1000,则提交,否则回滚.

用户1的例子:

begin;

-- Reduce checking …
Run Code Online (Sandbox Code Playgroud)

postgresql transactions serializable

14
推荐指数
1
解决办法
1006
查看次数

在WebAPI中使用Model上的Serializable属性

我有以下场景:我正在使用WebAPI并根据模型将JSON结果返回给使用者.我现在还需要将模型序列化为base64,以便能够将它们保存在缓存中和/或将它们用于审计目的.问题是当我将[Serializable]属性添加到模型以便将模型转换为Base64时,JSON输出会发生如下变化:

该模型:

[Serializable]
public class ResortModel
{
    public int ResortKey { get; set; }

    public string ResortName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果没有该[Serializable]属性,则JSON输出为:

{
    "ResortKey": 1,
    "ResortName": "Resort A"
}
Run Code Online (Sandbox Code Playgroud)

使用[Serializable]JSON输出的属性是:

{
    "<ResortKey>k__BackingField": 1,
    "<ResortName>k__BackingField": "Resort A"
}
Run Code Online (Sandbox Code Playgroud)

如何在[Serializable]不更改JSON输出的情况下使用该属性?

c# json serializable asp.net-web-api

13
推荐指数
1
解决办法
9121
查看次数