0

クラス変数を別のクラスに渡して、そのクラスのクラス変数にしたいのですが。次のコンテキストでこれを行うにはどうすればよいですか?

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

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

3 に答える 3

1

あなたが尋ねているwjatを理解するのは難しいですが、ここに可能な答えがあります:

クラス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がある状況になります。(または、いずれかまたは同じように...またはとしてまたはどこで、それぞれタイプとを持っています。)arrayA.arrayB.arrayABarraya.arrayb.arrayabAB

AB(またはABと宣言を含むいくつかの3番目のクラス)の間に直接またはサブタイプの関係を作成できない場合は、運が悪いです。彼らが宣言を共有できる方法はありません。

ただし、静的インポートを使用して、宣言が共有されているように見せることができます。例えば:

    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状態、特に裸の配列として表される状態を共有するために変数を使用することは一般的に悪い考えです。これは明らかにオブジェクト指向ではありません。

于 2010-07-14T10:01:52.357 に答える
0

Aのインスタンスにアクセスできますか?または、配列を静的にしたいですか?

于 2010-07-14T09:58:08.093 に答える
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
    }
}
于 2010-07-14T10:13:07.260 に答える