java - 我需要在静态类中使用非静态变量...如何解决这个问题?

标签 java android static

以下是相关问题的概述:

public class Foo extends Activity{

    Cursor myCursor;

    public void onCreate(Bundle savedInstanceState) {
        //I initialize myCursor here
    }

    public void setCursor(){
        //When we are interested in a different set of data, the cursor changes here
    }

    public static class MySurfaceView extends SurfaceView implements Runnable{
        public void run(){
            //I need to access myCursor here
        }
    }
}

我知道我无法从静态类中访问非静态变量,但我无法将 myCursor 设为静态,因为它需要将几乎所有函数更改为静态。有什么建议吗?

最佳答案

为什么内部类是静态的?如果删除 static 修饰符,那么它将可以访问其封闭类,然后访问 myCursor。

如果它必须是静态的,那么您只需将必要的 Foo 对象传递到其构造函数中,并将其用作对封闭类的引用。不太整洁,但应该仍然有效。

无论如何,static(在字段上)意味着它属于类而不是对象。您可能对 final 感到困惑,这意味着引用无法修改?

在内部类上,它的行为不同(并且不一定符合逻辑!)它删除了从内部类到外部类的引用,因此它本质上是一个完全独立的类,只是位于另一个类中。

如果您想要更详细的答案,则必须提供有关应用程序上下文的更多详细信息 - 仅从该代码 fragment 很难说出什么应该是静态的,什么不应该是静态的。

关于java - 我需要在静态类中使用非静态变量...如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6945358/

相关文章:

android - 防止 TextView 中的断字

java - 为什么java中的serialVersionUID必须是static、final、long类型?

java - App 的背景音乐应该有自己的主线吗?

java - 在我的 Java 模型中管理双向关联

android - 如何解决 Dalvik 编译器对 64K 方法的限制问题?

Android:更新系统应用

c - 静态常量与常量静态

c++ - 函数的静态和动态父级

java - Java 中 <<= 或 >>= 是什么意思?

java - 在 Android 中修改外部库的最佳实践是什么?