当前位置: 首页 > 面试题库 >

为什么要以静态方式访问静态字段?

赵飞语
2023-03-14
问题内容
public enum MyUnits
{
    MILLSECONDS(1, "milliseconds"), SECONDS(2, "seconds"),MINUTES(3,"minutes"), HOURS(4, "hours");

    private MyUnits(int quantity, String units)
    {
        this.quantity = quantity;
        this.units = units;
    }

    private int quantity;
    private  String units;

 public String toString() 
 {
    return (quantity + " " + units);
 }

 public static void main(String[] args) 
 {
    for (MyUnits m : MyUnits.values())
    {
        System.out.println(m.MILLSECONDS);
        System.out.println(m.SECONDS);
        System.out.println(m.MINUTES);
        System.out.println(m.HOURS);
    }
 }
}

这是指帖子 ..无法回复或评论任何这样创建的新帖子。为什么是我的

System.out.println(m.MILLSECONDS);

发出警告-应该以静态方式访问静态字段MyUnits.MILLSECONDS吗?谢谢。


问题答案:

因为当您访问静态字段时,您应该在类(或本例中为枚举)上执行此操作。如

MyUnits.MILLISECONDS;

不在实例

m.MILLISECONDS;

编辑 要解决 为什么这样
的问题:在Java中,当您将声明为时static,就是说它是类的成员,而不是对象(因此为什么只有一个)。因此,在对象上访问它是没有意义的,因为该特定数据成员与该类相关联。



 类似资料:
  • 我从一个有静态方法的类(B)扩展了一个类(a),然后在另一个类(C)中,我创建了一个类(a)的实例,并且我能够访问类B的静态方法。为什么会这样? A类: B类: C类:

  • 我有一个关于静态方法访问的问题。我有一个类,其中有4个静态方法。如代码所示: } 我正在从下面的代码调用来自onLoadShipperDetailsListCtrl()的setSortingEnable()方法: } 因此,如果我从其他类调用setSortingEnabled()方法,我会认为它是公共的,而其他方法是私有的,但它会给我一个错误:Java . lang . nosuchmethode

  • 问题内容: Java main()方法的方法签名为: 此方法是否有理由是静态的? 问题答案: 该方法是静态的,因为否则会产生歧义:应调用哪个构造函数?特别是如果你的班级是这样的: JVM应该调用吗?它应该做什么x? 如果不是,JVM是否应该在不运行任何构造方法的情况下实例化?我认为不应该这样,因为这将对整个类进行特殊处理-有时你有一个尚未初始化的实例,并且必须在每个可以调用的方法中进行检查。 对于

  • 问题内容: main.go 目录结构: 即使阅读了文档,我仍然无法理解此处的确切功能。 1)如果删除,为什么我无法访问? 2)如果删除该功能,URL将映射到文件夹吗? 问题答案: 将请求的处理转发给您指定为其参数的对象,但在此之前,它会通过剥离指定的前缀来修改请求URL。 因此,例如,在您的情况下,如果浏览器(或HTTP客户端)请求资源: 将会剪切和将修改后的请求转发到由返回的处理程序,因此它将看

  • 静态变量属于类本身,在类加载的时候就会分配内存,可以通过类名直接访问; 非静态变量属于类的对象,只有在类的对象产生时,才会分配内存,通过类的实例去访问; 静态方法也属于类本身,但是此时没有类的实例,内存中没有非静态变量,所以无法调用。