java - 为什么我们在java中将类设为静态?

标签 java class static

<分区>

Possible Duplicate:
Static nested class in Java, why?

我知道 java 中的静态字段。但是不知道为什么要创建一个静态类。有什么想法吗?

最佳答案

class Outer {
    int a;
    class Inner {
        void test() {
            System.out.println(a);
        }
    }
}

通常,内部类可以引用其所属类的字段,如您在上面的(伪)示例中所见。因此 Inner 的实例可以访问 Outer 中的字段/方法等。

但这需要每个 Inner 实例都有一个与之关联的 Outer 实例。所以你不能这样做

new Inner();

而是必须做

new Outer().new Inner();

在某些情况下,这是不可取的——比如您需要确保您的 Outer 实例可能会被垃圾收集,或者您需要使 Inner 实例独立于 Outer。在这种情况下,您可以将其更改为

static class Inner {

在这种情况下,现在您可能不再像以前那样引用“a”,但作为交换,您根本不需要拥有 Outer 的实例来拥有 Inner 的实例。

关于java - 为什么我们在java中将类设为静态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7846191/

相关文章:

Java基础: a static function without a name,或返回类型

java - 在java中查找OSX的版本

java - 将字符串格式转换为

java - 如何为 TCP 流编码数据?

android - 从我的一个类(class)设置一个 xml

c++ - 从结构或类中提取成员变量

c++ - 函数内部的静态变量与C++中的静态类变量

java - 尝试打印 vector 的平均值时出错

java - 为什么此代码显示不同的日期?

dynamic - 静态分配与动态分配与自动分配