繁体   English   中英

为什么在java中我必须将类名添加到静态变量之前才能从类外部访问它。 想了解编译器

[英]Why is it in java I have to prepend the class name to static variable to access it from outside the class. Looking to understand the compiler

因此,在 Java 中,您编写了一个公共静态变量,并且必须通过说 class.var 在类之外访问它,我觉得很奇怪,如果您的包包含在 main文件。

希望了解编译器如何在使用相同 class.publicstatic 方法的 Java 和面向对象语言上工作。

您可以在不同的类中使用同名的静态变量。 您可能会在未指定类名的情况下在此请求中遇到错误。 举个例子;

package com.axample;
import ...

public static class FooClass{
    public static int staticVariable;
    .
    .
    .  
}
package com.axample;
import ...

public static class BarClass{
    public static int staticVariable;
    .
    .
    .  ​
}


import static com.example.FooClass.*;
import static com.example.BarClass.*;

public class Main{
    public static void Main(String[] args){
        int baz = 0;
        //staticVariable = baz ;   //Error
        BarClass.staticVariable = baz;  //Must be
    } ​
}


类的静态成员不在类之外的范围内,甚至不在同一个包中的其他类中。

但是,您可以通过添加静态导入将它们添加到当前类的范围,例如

import static com.example.Foo.*;
import static com.example.Bar.doStuff;

这会将Foo类的所有静态成员添加到名称范围。

它还将在Bar类中添加方法doStuff所有静态重载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM