java - 序列化接口(interface)

标签 java android serialization

我正在尝试在其具有接口(interface)的构造函数中序列化一个对象,我将解释:

这是对象类:

public class MyObj implements Serializable{
    private static final long serialVersionUID = -29238982928391L;
    private MyCallback onMyCallback;
    private String shortcutsText;

    public MyObj(String shortcutsText, MyCallback onMyCallback){
        this.shortcutsText = shortcutsText;
        this.onMyCallback = onMyCallback;
    }

    public MyCallback getOnMyCallback() {
        return onMyCallback;
    }
}

这是MyCallback界面:

public interface MyCallback extends Serializable {
    long serialVersionUID = -1306760703066967345L;
    void onMyCallbackClickListener();
}

但是当我尝试用(out is ObjectOutputStream)编写它时:

MyCallback myCallback = new MyCallback() {
            @Override
            public void onMyCallbackClickListener() {
                Toast.makeText(getApplicationContext(), "TEST!", Toast.LENGTH_LONG).show();
            }
        };
out.writeObject(myCallback);

或者用:

out.writeObject(new MyObj("Test", myCallback));

它抛出:

java.io.NotSerializableException

最佳答案

匿名内部类是不可序列化的。在这里查看很好的解释:NotSerializableException on anonymous class

关于java - 序列化接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41590091/

相关文章:

java - 在 Android 中使用反射实现向后兼容

ruby - 多级关联的数据库对象到 YAML

c# - 将 XML 反序列化为 Dictionary<string, string>

java - 无法将 json 转换为 java pojo 类?

android - ListView 后面缺少按钮

java - 小程序未初始化

java - ID Watson 自然语言分类器。错误

java - 基于XSD的二进制序列化

JavaEE : Web Service Deployed Successfully but Tester is not Working

java - 如何避免生成以太坊 DAG 进行测试?