为了账号安全,请及时绑定邮箱和手机立即绑定

Java - java.io.NotSerializableException:

Java - java.io.NotSerializableException:

梦里花落0921 2021-09-03 10:34:13
我想从活动到另一个分享课程。我尝试了一切,到处搜索,但无法解决我的问题。最重要的是我必须使用BusinessLogic作为整个App的控制类。每个变量,方法都在其中..有人可以帮我吗?public void ConnectSQL() {    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();    StrictMode.setThreadPolicy(policy);    try {        Class.forName("net.sourceforge.jtds.jdbc.Driver");        con = DriverManager.getConnection("jdbc:jtds:sqlserver://192.168.3.10;databaseName=hungary;user=stockiduser;password=Berwin1559;loginTimeout=5;socketTimeout=5");        KapcsolatAllasKijelzes(false);    } catch (Exception e) {        KapcsolatAllasKijelzes(true);    }}这个方法位于我名为 BusinessLogic 的类中......这是 MainActivity 代码:Intent intent=new Intent(this, Kiszedes.class);intent.putExtra("bl",bl);startActivity(intent);Kiszedes.class 是目标活动: BusinessLogic bl = (BusinessLogic) getIntent().getSerializableExtra("bl");
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

您的BusinessLogic类包含对JtdsConnection不可序列化的对象的引用。仅仅BusinessLogic成为Serializable其所有成员(以及成员的成员等)是不够的。也必须如此Serializable。


由于JtdsConnection不是您创建的类,因此您无法创建它Serializable。无论如何,您尝试进行这项工作的方式并不完全正确。


我建议您拥有业务逻辑的全局实例,以便您可以从任何活动/片段访问它。


在我的项目中,我通常创建一个包含我需要的对象实例的Conf类static。在你的情况下,你可能有这样的事情:


public class Conf {


    @Nullable

    private static BusinessLogic businessLogic;


    @NonNull

    public static BusinessLogic getBusinessLogic() {


        if (businessLogic == null) {

            businessLogic = new BusinessLogic();

        }


        return businessLogic;

    }

}

在你的活动,你现在可以简单地做:BusinessLogic bl = Conf.getBusinessLogic()。


查看完整回答
反对 回复 2021-09-03
  • 1 回答
  • 0 关注
  • 176 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号