Java 创建一个不可更改的ID
我正在寻找一种在java中为对象生成不可更改ID的方法。我认为这是很基本的,但我是个初学者 如果这是我的代码:Java 创建一个不可更改的ID,java,declaration,Java,Declaration,我正在寻找一种在java中为对象生成不可更改ID的方法。我认为这是很基本的,但我是个初学者 如果这是我的代码: public class Node implements IXYNode { String id =""; String description =""; int x =0; int y =0; public XYNode(String id, int x, int y) { this.id=id; this.x=x; this.y=y; if(this
public class Node implements IXYNode
{
String id ="";
String description ="";
int x =0;
int y =0;
public XYNode(String id, int x, int y)
{
this.id=id;
this.x=x;
this.y=y;
if(this.id.equals(null) || this.id.isEmpty())
{
throw new IllegalArgumentException();
}
}
}
所以一旦给了,以后就不应该改变了,提前谢谢 将id设为
final
,并且您不能再次分配它,除非它是构造函数或处于删除时间
final String id ="";
你可以做:
public class Node implements IXYNode
{
private final String id ="";
String description ="";
int x =0;
int y =0;
public XYNode(String id, int x, int y)
{
this.id=id;
this.x=x;
或者我认为更好的方法是:
public XYNode(int x, int y)
{
this.id=UUID.randomUUID().toString(); //randomUUID
this.x=x;
好的,尝试了这个,但是它在构造函数中说:“最终的字段XYNode.id无法分配”,所以我不理解的是:1。构造函数有责任创建一个新对象,对吗?并且ID在构造函数中作为参数给出,所以我也需要在构造函数中声明它,否则我错了吗?
final String ID代码>。如果在声明时分配它,则不能在构造函数中重新分配它。@Johnny,因为在声明时您已经这样做了String id=“”代码>只允许分配一次。好的,但是如果我创建了这个类的一个新对象,如果这个对象是final的,会给它哪个ID?我想我自己的逻辑有一个问题,你要在创建对象时提供它,仅此而已。以后你不能再改了。