我想将一个类变量传递给另一个类,并使其成为该类的类变量。在以下情况下我该怎么做?
public class GLCamTest extends Activity { public float array[] = something; } class GLLayer extends GLSurfaceView implements SurfaceHolder.Callback, Camera.PreviewCallback, Renderer { //Get class variable here }
很难理解您正在问的问题,但这是一个可能的答案:
使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.array或的属性B.array。(或在任一A或B刚刚array…甚至作为a.array或b.array地方a,并b有类型A和B分别。)
array
public static
A.array
B.array
A
B
a.array
b.array
a
b
如果您无法在A和B(或A,B以及一些包含声明的第三类)之间创建直接或子类型关系,那么您很不走运。他们无法共享声明。
但是,您可以使用静态导入来使声明看起来像是共享的。例如:
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变量共享状态(尤其是表示为裸数组的状态)通常是一个坏主意。这显然是非面向对象的。
static