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

java里两个类调用同一个类,如何传递句柄?

java里两个类调用同一个类,如何传递句柄?

青春有我 2019-03-01 10:50:06
1.背景是这样的:我有一个MainActivity,它会new一个类“Base”。然后它会新建一个SecActivity,但此SecActivity也会用到这个“Base”类,但问题来了,这两个页面的Base类做不到同一个,请问大家有什么好方法解决? 2.示意代码如下: public class Base{ public int Value; } public class A{ Base baseHandle = new Base(); private void foo() { baseHandle.Value = 10; B bHandle = new B(); bHandle.baseHandle = baseHandle; } } public class B{ Base baseHandle = new Base(); private void foo() { baseHandle.Value = ?; //请问如何让Value 等于A中已赋值的10,而不是0; } } 在C#里这么做貌似没问题,但在java里,或者说是在Android studio里这个做却是行不通,恳请大家指教,谢谢。 -------------更新----可能问题描述有点脱离本意,其实是这样的:我一个底层类“myDriver”,里面包含了串口驱动和各式下位机接口方法,还有个定时器。 然后我在MainActivity里把这个myDriver实例化,并已经打开串口了。 然后我startActivity了secActivity,但是这个第二个页面没法调用第一个页面已经实例过的myDriver。 我是想让第二个页面能够操作到第一个页面实例化后的myDriver句柄,求救啊~~~
查看完整描述

6 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

public A(Base base),public B(Base base)创建实例的时候传进去就好了

查看完整回答
反对 回复 2019-03-01
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

你是想要两个类使用同一个对象吧?
那应该由一个使用的类new出对象,然后传递给下一个。可以作为构造函数的参数,也可以set进去。
这种情况就像两个人,第一个人去了一个网站网购了一个空白的本子,写了一些字,然后把这个本子给第二个人。
而目前的写法相当于第一个人买了本子,写了字。然后第二个人去了同一个网站买了同一个牌子的空白本子。

查看完整回答
反对 回复 2019-03-01
?
米脂

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

你的意思是想把Base写成一个单例吗, 由Base控制对象创建,其他类使用Base对象的时候都需要通过一个Base类中的public的获取实例的方法获取Base对象.
简单写法:

public class Base {
    
    private Base () {
    }

    private static Base base = null;
    
    public static synchronized Base getInstance(){
        if(null == base){
            base = new Base();
        }
        return base;
    }
}
查看完整回答
反对 回复 2019-03-01
?
MMTTMM

TA贡献1869条经验 获得超4个赞

我最后的做法是在A中new了一个Base的单例,然后在B中就可以用了。

public class Base{
        public int value;
    }
    public class A{
        public static Base baseHandle = new Base();
        private void foo(){
            baseHandle.value = 10;
        }
    }
    public class B{
        private void foo(){
            A.baseHandle.value = ?
            // 可以获取到A中已实例的value了
        }
    }
查看完整回答
反对 回复 2019-03-01
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

最简单的,你把 Value 声明为类级别的变量:

public class Base{
    public static int Value;
}

或者你将 Base类 继承 Serializable 接口,然后通过 IntentputExtra 方法将你在 MainActivity 中创建的 Base 对象传递到 SecActivity 就可以。

查看完整回答
反对 回复 2019-03-01
  • 6 回答
  • 0 关注
  • 453 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信