【问题标题】:returning a private static variable返回一个私有静态变量
【发布时间】:2014-08-19 00:53:33
【问题描述】:

我无法返回我的静态私有变量 personCount。这个变量只是计算我添加到我的程序中的人数,在我的 Person 构造函数中我设置它,所以每次输入一个人时,personCount 递增 1。我还创建了一个 getPersonCount 方法,它只返回 personCount 的 int 值.

我的问题是,当尝试在我的测试文件中实现此方法时,我不确定如何调用该方法,并将 personCount 的值记录到输出中。

我不确定我是在一百万英里之外还是一个小的语法错误,所以任何帮助将不胜感激!

My Person 构造函数:

public Person(String foreName, String surName, int age,
        double height, String gender)
{
    this.foreName = foreName;
    this.surName = surName;
    this.age = age;
    this.height = height;
    this.gender = gender;

    personCount = personCount +1;
} 

我的 getPersonCount 方法:

public int getPersonCount()
        {
            return personCount;
        }

我尝试在我的试驾中调用该方法:

    System.out.println(getPersonCount());

如果需要更多代码,请告诉我。

【问题讨论】:

  • 我仍然不知道问题出在哪里。你有错误吗?意外的输出?
  • getPersonCount()设为静态然后调用Person.getPersonCount()?
  • 鉴于getPersonCount 不是static,您不需要引用Person 吗?考虑提供一个runnable example 来证明您的问题。这将导致更少的混乱和更好的响应
  • @user3189142 因为他可能不希望其他人访问或修改它,所以这是关于遏制
  • 虽然将 getPersonCount 方法设为静态会更有意义,但它应该可以作为实例方法正常工作,前提是您手头有一个实例。

标签: java methods constructor getter


【解决方案1】:

试试这个,在 Person 类中定义你的方法:

public static int getPersonCount() { //<-- note the static modifier
   return personCount;
}

调用它:

System.out.println(Person.getPersonCount());//<-- use class name, if your using this method outside the class

【讨论】:

  • 方法不需要是静态的,只要有 Person 的实例可以访问即可。
  • @HotLicks 对于哪种修复更有效有什么偏好吗?无论是使方法静态,还是使用实例访问来调用它。
  • @freshwaterjoe - 我看不出将其设为实例方法的令人信服的理由,以及使其成为静态的一些好的论据。虽然,事实上,实例方法实际上可能只是更高效一点(取决于正在使用的 JVM 版本中的一些实现细节)。
  • @HotLicks 我认为可能会弹出的唯一错误是在没有 Person 实例的情况下尝试返回 personCount,即电话簿为空。但是决定坚持使用实例方法,因为它非常适合我需要它。非常感谢您的帮助!
【解决方案2】:

你有两个选择:

public static int getPersonCount() { 
   return personCount;
}

对应的调用:

Person.getPersonCount();

public int getPersonCount() { 
   return personCount;
}

以及相应的调用:

myPersonInstance.getPersonCount();

所以在最后一种情况下,您处理的是Person 实例。

【讨论】:

    【解决方案3】:
    public static int getPersonCount(){
          return personCount;
    }
    

    然后调用上面的方法

    Person.getPersonCount();
    

    【讨论】:

    • 我看到 1 个语法错误和 1 个实现逻辑错误。
    • @PM77-1 你在谈论答案还是问题?
    • 我的意思是 - 在你的回答中
    • static 全部小写。但是你说你不能从非静态上下文访问静态变量是非常非常错误的。
    • @sanjayduttindia "你不能从非静态上下文中访问静态变量" => 完全相反;) 看到这个:javarevisited.blogspot.fr/2012/02/…
    猜你喜欢
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 2015-12-20
    相关资源
    最近更新 更多