将类变量传递给另一个类

时间:2010-07-14 09:54:19

标签: java class-variables

我想将一个类变量传递给另一个类,并使其成为该类的类变量。我将如何在以下背景下执行此操作?

        public class GLCamTest extends Activity {
public float array[] = something;
  }

  class GLLayer extends GLSurfaceView implements SurfaceHolder.Callback,
  Camera.PreviewCallback, Renderer {
  //Get class variable here
 }

3 个答案:

答案 0 :(得分:1)

很难理解你问的问题,但这是一个可能的答案:

使B类成为A:

的子类
    public class A {
        // Declaration of the 'array' attribute
        public float[] array = new float[]{1.1f, 2.2f, 3.3f};

    }

    class B extends A {
        // Every instance of 'B' also has an 'array' attribute
    }

如果array被重新声明为public static,则会出现array属性可以称为A.arrayB.array的情况。 (或AB内只有array ......或a.arrayb.array ab分别有AB类型。)

如果您无法在AB(或AB和包含声明的某个第三类之间创建直接或子类型关系,那么您就不在运气。他们无法共享声明。

但是,您可以使用静态导入使其看起来像是共享声明。例如:

    public class A {
        // Declaration of the 'array' attribute
        public float[] array = new float[]{1.1f, 2.2f, 3.3f};

    }


    import static A.array;
    class B {
        // now I can use 'array' without qualifying it with 'A'
    }

顺便说一句,使用static变量来共享状态通常是一个坏主意,尤其是表示为裸阵列的状态。这显然是非面向对象的。

答案 1 :(得分:0)

您是否可以访问A的实例?或者你想要数组是静态的?

答案 2 :(得分:0)

您希望数组在任何地方都可见(就好像它是一个全局变量)吗?

如果是这样,那么它需要是静态的。

但我的猜测是你想将GLCamTest的实例传递给GLLayer对象,在这种情况下你应该使用setter函数或在构造函数中传递它。

public class GLCamTest extends Activity {
    public float array[] = something;
}

class GLLayer extends GLSurfaceView implements SurfaceHolder.Callback,
    Camera.PreviewCallback, Renderer {
    private GLCamTest camTest;
    public void setCamTest(GLCamTest camTest) {
        this.camTest = camTest;
        // Now you can access the array using camTest.array
    }
}