java - 计算不使用 static 的方法的总调用次数

标签 java file static io

更新::好的,我将原始问题陈述放在这里

假设 Main 类创建一个方法 createPerson 并在任何其他方法中多次调用它,那么根据 createPerson 执行的次数,您必须初始化对象并输入学生姓名并输出名称。

一旦我知道我必须创建多少个对象,对后面的部分进行编程就变得非常简单

对于之前找到要创建的对象数量的问题,我选择了文件处理方式,因为我来自 C、C++ 背景,其中文件处理相对简单。

现在我应该如何修改程序,以便在文件中写入一个整数,稍后当我读取文件时,我将获得对象的数量

这个例子禁止使用静态变量,这是一种脑筋急转弯 所以不要使用静态

这是我的 Main.java 文件

import java.io.IOException;


public class Main {
    public static void main(String[] args) throws IOException{
        int i;
        Student[] totalStudents = new Student[10];
         Student.create3Persons();
          Student.create2Persons();
    }

}

这是我的 Student.java 文件

import java.io.*;
public class Student {


    private static void createPerson() throws IOException{
        int number=0;
        File file = new   File("arg.txt", null);
        FileOutputStream fos = new FileOutputStream(file);
        DataOutputStream dos = new DataOutputStream(fos);

        FileInputStream fis = new FileInputStream(file);
        DataInputStream dis = new DataInputStream(fis);
        while(dis.readInt()!= -1)
        {
            number++;
            dos.writeInt(1);
        }
    }

     static void create2Persons() throws IOException{
        Student.createPerson();
        Student.createPerson();
    }

    static void create3Persons() throws IOException{
        Student.createPerson();
        Student.createPerson();
        Student.createPerson();
    }
}

我应该如何修改这个程序以便计算createPerson函数被调用了多少次?

最佳答案

如果您想计算静态方法被调用的次数,您必须使用静态变量 - 它是真正的全局状态。编辑:是的,您可以使用文件系统作为全局状态的另一个存储库,但我个人认为这通常是一个坏主意 - 特别是如果它只是绕过学术问题的要求。

我想这有一些异常(exception) - 如果静态方法可以证明仅从一个类调用,并且该类是单例,那么该单例中可能有一个实例方法......但这几乎是一个角落案件。在您的情况下,create3Personscreate2Persons 都可以从包中的任何位置访问,并且它们不是单例中的实例方法,因此除了静态变量之外,没有单一上下文可以保存调用计数。

也许如果您能更多地解释一下您想要实现的目标,我们就可以为您提供更多帮助...

编辑:是的,如果您可以依赖合作调用者 - 并且您可以更改方法签名 - 那么您可以保留(比如说)一个AtomicInteger,并确保您总是将对同一对象的引用传递给 createStudent 方法。再说一遍,我们确实需要知道问题的规则是什么......

关于java - 计算不使用 static 的方法的总调用次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8992456/

相关文章:

c - 包括静态库和头文件Makefile问题(C)

c++ - 静态与成员变量

java - 卡夫卡 : How delete topic works

java - 错误 java.lang.ArrayIndexOutOfBoundsException :

java - 连接完整文件路径时仅显示文件名列表

c - static const 和 const 有什么区别?

java - 如何在POM文件中指定maven命令行选项?

java - Tomcat 中的 Servlet 并发/同步?

c - 只读来自 FILE 对象的缓冲日期

c# - 如何将文件读入保留 CR/LF 的字符串?