Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何跟踪在类中创建的对象_Java_Algorithm_Constructor - Fatal编程技术网

Java 如何跟踪在类中创建的对象

Java 如何跟踪在类中创建的对象,java,algorithm,constructor,Java,Algorithm,Constructor,这个问题是在一次采访中问我的。他想知道,假设我们为一个类创建了一个对象,并且像这样创建了多个对象。因此,如果已经创建了任何对象,那么我如何跟踪创建的对象 我的做法:- 1:-首先我想用计数来获得创建对象的轨迹,但后来我无法清楚地解释他 回家后,我试图在互联网上搜索,但没有找到任何具体的结果,但今天当我搜索同一个问题时,我得到了一个与该问题有点相关的东西。它是私有的 我的想法正确吗?如果没有,请告诉我如何解决这个问题。除了保留一个变量并在类中至少提供一个构造函数之外,没有其他简单的方法。现在在这个

这个问题是在一次采访中问我的。他想知道,假设我们为一个类创建了一个对象,并且像这样创建了多个对象。因此,如果已经创建了任何对象,那么我如何跟踪创建的对象

我的做法:- 1:-首先我想用计数来获得创建对象的轨迹,但后来我无法清楚地解释他

回家后,我试图在互联网上搜索,但没有找到任何具体的结果,但今天当我搜索同一个问题时,我得到了一个与该问题有点相关的东西。它是私有的

我的想法正确吗?如果没有,请告诉我如何解决这个问题。

除了保留一个变量并在类中至少提供一个构造函数之外,没有其他简单的方法。现在在这个构造函数中,每次递增一个变量

如果您意识到线程安全性,那么使用AtomicInteger类型,这应该可以解决您的问题

所以,如果已经创建了任何对象,那么我如何跟踪 创建的对象

在类中定义一个
static
字段,以存储跟踪的信息,并在每次调用任何构造函数时更新它。
例如,要跟踪创建的实例及其日期时间创建,请假设您有一个已声明的构造函数:

public MyClass{

   private static final List<TrackedInformationForMyClass> trackedInformationForMyClasses = new ArrayList<>();

   public MyClass(){

        // tracking 
        trackedInformationForMyClasses.add(new TrackedInformationForMyClass(this, LocalDateTime.now()));
        // usual code
       ...
   }
}

我很难理解这个问题。您是否在询问如何跟踪为特定类创建的实例数?为什么不在构造函数中增加一个静态计数器呢?实际上,那个家伙问我的问题很简单,假设我正在为一个类创建对象(在运行时),并且一个类中可以有多个对象,那么我如何跟踪创建的对象呢。如果它是被创造出来的,那么我可以说像这个特殊的物体被创造了两次,直到不确定你在说什么。你不能创建一个特定的对象两次。如果不能,那么我可以跟踪它吗?跟踪什么?好的,就像每当创建一个对象时,变量计数就会增加一样。
public class TrackedInformationForMyClass{
    private LocalDateTime datetime;
    private MyClass myClass;

   public TrackedInformationForMyClass(LocalDateTime datetime, MyClass myClass){
       this.datetime = datetime;
       this.myClass = myClass;
   }
   ... getter and helpful methods
}