加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java – 能够访问静态方法的实例

发布时间:2020-12-15 04:42:04 所属栏目:Java 来源:网络整理
导读:我刚刚开始使用 Java,正在查看嵌套类主题,并尝试了一些东西,当突然,这发生了: class Encloser{ static int i; static void m1() { System.out.println(i); } static void m2() { Enclosee.accessEncloser(); } static class Enclosee { static void accessE
我刚刚开始使用 Java,正在查看嵌套类主题,并尝试了一些东西,当突然,这发生了:

class Encloser
{
  static int i;

  static void m1()
  {
    System.out.println(i);
  }

  static void m2()
  {
    Enclosee.accessEncloser();
  }

  static class Enclosee
  {
    static void accessEncloser()
    {
      i = 1;
      m1();
    }

    static void accessEncloserNew()
    {
      m2();
    }
  }
}

class EncloserTest
{

  public static void main(String[] args)
  {
    Encloser ee = new Encloser();
    Encloser.Enclosee e = new Encloser.Enclosee();
    ee.m1();
    ee.m2();
    e.accessEncloser();
    e.accessEncloserNew();Encloser.m1();
    Encloser.m2();
    Encloser.m1();
    Encloser.Enclosee.accessEncloserNew();
    Encloser.Enclosee.accessEncloser();
  }

}

运行上面的代码不会给出任何错误/异常.它只是运行.这里的混淆是,实例如何在这里调用静态方法?不像Ruby中的类方法那样的静态方法吗?

任何解释将不胜感激:)

解决方法

这是语言允许的:

ee.m1();

但你应该写:

Encloser.m1();

编译器应该发出如下警告,通知你:

source_file.java:37: warning: [static] static method should be qualified by type name,Encloser,instead of by an expression ee.m1();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读