java - 使用构造函数创建唯一 ID
问题描述
我想创建具有名称和唯一 ID 号的对象,该 ID 号随着每个用户的创建而递增。
class user {
static int uid = 0;
String name;
public user (String name){
User.uid = uid++;
this.name = name;
}
}
在 main 方法中创建用户对象并打印出他们的 ID 时,它们都返回 0。我认为有一个简单的解决方法,但似乎无法在网上其他地方找到它。
解决方案
您的代码有几个问题:
- 用户没有任何 ID。您所拥有的只是一个静态 ID,因此由所有用户共享
- 您正在递增静态 ID,然后立即将其先前的值分配给 ID。
- 您不尊重 Java 命名约定。
代码应该是
class User {
private static int uid = 0;
private String name;
private int id;
public User(String name) {
uid++;
this.id = uid;
this.name = name;
}
// getters
}
或者,如果您希望 ID 从 0 开始:
class User {
private static int uid = 0;
private String name;
private int id;
public User(String name) {
this.id = uid++;
this.name = name;
}
// getters
}
推荐阅读
- istio - 如果 loadBalancing.simple: PASSTHROUGH,流量不会通过 Egress
- user-interface - Hashicorp Vault UI - 未能在“完整性”属性中找到有效的摘要......资源已被阻止
- mysql - 在 MYSQL 8.0 中设置变量的警告
- python - 在多个按钮单击时将 Ajax 请求传递给 Django 视图
- android - 如何在 Android 中使用画布在其他图像中添加图像?
- azure-cosmosdb - in 等效于 cosmos db 子查询
- c# - 无法初始化 tesseract 引擎,但我确实拥有所有文件
- sql-server - SQL Server 服务在重新启动后需要多次重试才能启动,但最终会启动
- ssl - HTTPS 图标红色并使用 Apache2 划掉
- json - 在powershell中重新排序对象成员