获取具有最高价值字段的实例

时间:2018-11-07 16:14:52

标签: java

我想从id中获得最高价值。

我的龙目课:

package nl.SBDeveloper.Persons.Lombok;

import lombok.Data;

@Data 
public class Person {
    private int id;
    private String name;
}

我的代码:

Person person = new Person();

我想获取已经使用过的最高ID,然后再递增1。

我该怎么做?我不知道。

亲切的问候,

Stijn

2 个答案:

答案 0 :(得分:3)

定义一个静态字段。 @Data仅使用必需的参数创建一个构造函数。不需要ID,因为已经分配了ID,因此您会得到一个仅带有名称的构造函数。

SELECT question, answer
FROM FAQ
WHERE tags in ($keywords)

用法:

@Data
public class Person {
    private static final AtomicInteger currentId = new AtomicInteger();    

    private final int id = currentId.incrementAndGet();
    private final String name;
}

答案 1 :(得分:1)

定义数据类:

public class Person {
  private int id;
  private String name;

  Person(int id, String name) {
    this.id = id;
    this.name = name;
  }

  public String getName() {
    return this.name;
  }

  public int getId() {
    return this.id;
  }
}

通过定义PeopleFactory对象并为它提供一个静态personCount字段,可以跟踪创建的Person对象的数量。为确保此计数器是线程安全的,您需要同步字段或同步负责创建Person的方法。

public class PersonFactory {
  private static int personCount = 0;

  public PersonFactory() {
  }

  public synchronized Person getPerson(String name) {
    personCount++;
    return new Person(personCount, name);
  }
}

测试我们的实现:

public class Main {
  public static void main(String[] args) {
    PersonFactory personFactory = new PersonFactory();
    Person bill = personFactory.getPerson("Bill");
    System.out.println("ID: " + bill.getId() + ", Name: " + bill.getName());
  }
}
  
    

ID:1,名称:Bill