在Java中为对象指定一个方法编号



我制作了这个生成ID号的方法:

public String setID() {
UUID id = UUID.randomUUID();
String numericUUID = String.valueOf(Math.abs(Integer.parseInt(Byte.toString((byte) id.getMostSignificantBits()))));
return numericUUID;
}

现在,我想将生成的每个数字分配给一个特定的对象,例如:

employee emp1 = new employee("sarah", 2500,300);

我怎样才能用最简单的方法做到这一点?

让我们看看您的代码。您的方法setId没有设置ID,因此名称具有误导性,或者您希望具有不同的功能。

该代码生成一个类型4的UUID,并获得其最高有效64位。然后,有一个类型为byte的强制转换,即只有效地使用UUID的最高有效64位中的低8个有效位。8位是范围从-128到127的256个不同值。然后将它们转换为String,将此String解析为int,计算其绝对值并将其转换回String。

最后,您将获得一个介于0和255(包括255(之间的随机值,表示为String,也可以通过例如Integer.toString((int)(Math.random() * 256))rand.nextInt(256)获得,其中rand的类型为java.util.Random

回到方法的命名。目前尚不清楚这是一个实用程序方法,还是Employee类的一部分(顺便说一句:类型名称按照惯例是用Java中的UpperCamelCase编写的,所以它是Employees类而不是Employee(。

我假设您希望此方法是Employee类的一部分,那么问题是,如何设置某个员工的ID?

public class Employee {
private String id; // the id of the employee
public final void setId() {
id = Integer.toString((int)(Math.random() * 256));
}
// ...
}

如果您现在致电

Employee emp1 = new Employee("sarah", 2500,300);
emp1.setId();

将设置emp1的id。通常情况下,您希望在构造对象时发生这种情况,因此在构造函数内部调用此方法。然后,您可以选择将此方法设为私有方法,以防止它被其他类型的对象调用(封装功能(。

除此之外,您应该考虑直接使用UUID(例如成员变量声明private UUID id;(,因为256中的随机数很可能会产生重复,这不是ID的目的。

最新更新