栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么我们在内部类中可以有静态的final成员,却不能有静态的方法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么我们在内部类中可以有静态的final成员,却不能有静态的方法?

您可以在静态“内部”类中使用静态方法。

public class Outer {    static String world() {        return "world!";    }    static class Inner {        static String helloWorld() { return "Hello " + Outer.world();        }    }       public static void main(String args[]) {        System.out.println(Outer.Inner.helloWorld());        // prints "Hello world!"    }}

但是,确切地说,

Inner
根据JLS术语(8.1.3 )被称为嵌套类:

内部类可以继承不是编译时常量的静态成员,即使它们未声明它们也是如此。根据Java编程语言的通常规则,不是内部类的嵌套类可以自由声明静态成员。

同样,内部类不能具有成员也不是完全正确

static final
。更精确地说,它们还必须是编译时常量。以下示例说明了区别:

public class InnerStaticFinal {    class InnerWithConstant {        static final int n = 0;        // OKAY! Compile-time constant!    }    class InnerWithNotConstant {        static final Integer n = 0;        // DOESN'T COMPILE! Not a constant!    }}

在这种情况下允许使用编译时常量的原因很明显:它们在编译时内联。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453355.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号