java - 如何在不重复的情况下通过 A 类将 Java 中的对象从 B 类传递到 C 类

标签 java android object class-structure

假设我有 3 个类(class)。

  • A 类(扩展 Activity )
    B级
    C类(扩展 View )

A 创建一个包含 Bitmap 的 B 对象。 A 还使 C 无效。C 的 onDrawBitmap 绘制到其 Canvas

如何在不在 C 中创建另一个 Bitmap 对象的情况下绘制 B 持有的 Bitmap 对象?请注意,保持相同的“类结构”对我来说很重要。

这是伪代码。您可以看到这将 2 个 Bitmap 对象放入内存中。谢谢!

public class A extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        B b = new B();
        C c = (C) findViewById(R.id.c);

        c.passTheBitmap(b.bitmap);
        c.postInvalidate();
    }       
}

public class B {
    public Bitmap bitmap;
    public B(){
        bitmap = BitmapFactory.decodeResource(ActivityAContext.getResources(), R.drawable.fooBitmap);
    }
}

public class C extends View {
    public Bitmap bitmap;

    public C(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public passTheBitmap(Bitmap b) {
        bitmap = b;
    }
    @Override
    public void onDraw(Canvas canvas) {
        if (bitmap != null) {
            canvas.drawBitmap(bitmap, 0, 0, null);
        }
    }
}

最佳答案

好吧,通过在 C 中声明实例变量,您并没有完全复制 C 中的 Bitmap 对象。您只是拥有另一个对在 B 的构造函数中创建的原始 Bitmap 对象的引用。

关于java - 如何在不重复的情况下通过 A 类将 Java 中的对象从 B 类传递到 C 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5060156/

相关文章:

java - commons-httpclient-3.1 中的 URIUtil.encodePath 发生了什么变化?

java - 服装 jar 库无法解析异常类

java - 切换到 Firebase 数据库 9.4.0 内存泄漏

PHP:PDO 全局数据库变量?

java - 迭代器堆栈 hasNext() 不返回 true

java - 要求仅插入数字

java - 从 Eclipse 导出 jar 时出现 "Could not find main method from given launch configuration"错误

android - 获取构建失败并出现异常 Android Studio 0.4.3 和 0.4.4

javascript - Android jQuery fadeIn 奇怪的行为

javascript - 使用对象的属性来对象的对象数组