Java内部类和静态内部类的区别

Java的内部类根据是否使用static声明分为:静态内部类和非静态内部类,其中非静态内部类一般直接称为内部类。

内部类

内部类声明示例

public class OuterClass {
    ...
    public static class InnerClass {
        ...
    }

    public void doSomething() {
      InnerClass ic = new InnerClass();
      ...
    }
}

在外部类内部使用,如上面例子OuterClass里的doSomething()方法

InnerClass ic = new InnerClass();

如果是在非外部类调用,则首先需要实例化外部类,然后通过外部类调用内部类的构建方法:

OuterClass oc = new OuterClass();
InnerClass ic = oc.new InnerClass();

静态内部类

静态内部类的示例

public class OuterClass {
    ...
    public static class StaticInnerClass {
        ...
    }
}

构建静态内部类是不需要构建外部类的实例,只需要外部类引用静态内部类的构建方法即可:

StaticInnerClass sic = new OuterClass.StaticInnerClass();

版权声明:著作权归作者所有。

相关推荐

Java使用Gradle依赖配置compile,implementation和api的区别

这个主要看Java项目所使用的Gradle的版本。Gradle3.4新增了Java-library插件,java-library插件使用了新的依赖配置implementation和api。旧的依赖配置compile被废弃。Gradle3.4之前的版本java插件apply plugin: 'java' 添加依赖dependencies { compile '

在React JSX内部执行循环

这里实现一个表格组件来演示如何在React的JSX内部执行循环。案例假设有一个表格组件,和一个行组件<ObjectRow />,现在需要在表格组件里循环生成行组件<ObjectRow />。是不能直接在jsx里使用for循环,这里介绍两种方法:map函数和立即执行函数。方法一:使用map函数render: function ()&nb

Java 9:List.of()与Arrays.asList()的区别

Java 9新增了List.of的集合工程方法。它与Arrays.asList区别如下:1、Arrays.asList返回的是可变的列表,而List.of返回的是不可变的列表List<Integer> list = Arrays.asList(1, 2, null); list.set(3, 3); //&

Java 9模块声明中requires and requires transitive的区别

可读性(Readability)首先要理解模块的可读性module bar{     requires drink; } bar requires drink意味着:bar模块强制要求存在drink模块,这称为可靠配置。bar模块可以读入drink模块的文件,这称为可读性。bar模块可以访问drink模块的代码,这称为