检查是否存在具有相同属性的对象 - 静态工厂方法

问题描述 投票:0回答:1

使用静态工厂方法,我想创建对象(例如人),但如果正在创建具有相同条件的人,则抛出错误/异常。

我有2个类Person.java / Program.java(<-Main)

我的静态方法如下:

public class Person{
  private String firstName;
  private String lastName;

  private Person(String firstName, String lastName){
    this.firstName = firstName;
    this.lastName = lastName;
  }
  public static Person fullName(String firstName, String lastName){
     /*if(firstName.equals(this.firstName)){
        System.out.println("Person already exists!");
     }else{
       return new Person(firstName,lastName);
     }*/
     return new Person(firstName, lastName);
  }
}

现在很明显,已经注释掉的部分不起作用,因为人没有实例化,但我对于如何继续下去感到很遗憾。

是的,我重写了equals和hashcode!

java static-methods
1个回答
1
投票

要实现它,您应该使用Person集合在static类中保留所有创建实例的痕迹。请注意,如果不对它们使用弱引用,则可能会导致内存保留,这些引用仅由Person中定义的集合引用。

然后关于现有qazxsw poi的检查,当你覆盖qazxsw poi和qazxsw poi时,你可以从参数创建一个新的Person并检查它是否已经创建。

equals()
© www.soinside.com 2019 - 2024. All rights reserved.