gpt4 book ai didi

java - 序列化抽象类的问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:09:39 25 4
gpt4 key购买 nike

我正在尝试序列化抽象并将其传递到 Activity ,但收到错误java.lang.RuntimeException:Parcelable 在编写可序列化对象时遇到 IOException (name = com.example.MainActivity$1)

MainActivity.java

public class MainActivity extends Activity {

private static final String AUTO_EXTRA = "AUTO_EXTRA";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RelativeLayout l = new RelativeLayout(this);
l.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

new Setup.auto(this) {
@Override
public void onFailure(String message) {

}
};
}
}

Setup.java

public static class Setup {
public static abstract class auto implements FailedAuto, Serializable {
public auto(Activity activity) {
auto a = (auto) this;
Intent i = new Intent(activity, AutoSetup.class);
i.putExtra(AUTO_EXTRA, a); // Error happens here.
activity.startActivity(i);
}
}

private class AutoSetup extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((auto) getIntent().getSerializableExtra(AUTO_EXTRA)).onFailure("Message");
}

}

private interface FailedAuto {
void onFailure(String message);
}
}

我有两个类,MainActivity 和 Setup,当我运行代码时,我在 i.putExtra(AUTO_EXTRA, a); 行上收到错误。我发现序列化 MainActivity 解决了这个问题,但我不希望 MainActivity 是可序列化的,而且我不明白为什么它认为我正在序列化 MainActivity。我在这里做错了什么?

最佳答案

匿名内部类包含它所包含的类的引用。在本例中,MainActivity 类不可序列化。所以你得到了错误。因此,您需要在单独的类文件中创建基类的子类。

关于java - 序列化抽象类的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46160916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com