gpt4 book ai didi

java - 自动生成类内的变量值

转载 作者:行者123 更新时间:2023-12-01 18:41:34 25 4
gpt4 key购买 nike

我想对一个类进行编程,以便每次创建新对象时,该对象都有一个新生成的代码,但技巧是我不想将该值作为参数传递给构造函数。我大致有以下内容:

public class Article{
private int cod;
private String name;
public Article(String name){
this.name=name:
}
}

然后我有一个名为发票的类,我可以在其中调用此 Article 类:

public class Invoice{
ArrayList<Article> detailList;
public add(Article a){
detailsList.add(a);
}
public ArrayList<Article> getArticleList(){
return detailList;
}
}

所以我希望每次我在主类中制作一些文章并将其添加到 Invoie 类中时自动生成代码:

main class

ArrayList<Article> temp;
Article a1=new Article(....)
Article a2=new Article(....)
Article a3=new Article(....)
Invoice inv;
inv.add(a1)
inv.add(a2)
inv.add(a3)
//for example I want the first element to get a code of 10, the next as 20 and so on
temp=inv.getArticleList();
for (int i=0;i<temp.size();i++){
System.out.println(temp.get(i).getCod());
}

我尝试过使用:

Article 类中的 private static int cod

然后每次调用add方法时都添加+10,但是当我从主类中的列表中打印结果时,它只打印最后生成的代码;我该如何解决这个问题?

谢谢

最佳答案

您需要两个属性,一个静态属性和一个实例级别属性:

public class Article {

private int cod;
private String name;
private static int counter = 10;

public Article(String name) {
this.name = name;
this.cod = counter;
counter += 10;
}

}

使用上述内容,每篇文章都会有不同的代码,从 10 开始,每次递增 10 个单位。我使用这个 Invoice 类对其进行了测试,该类修复了发布代码中的一些错误:

public class Invoice {
ArrayList<Article> detailList = new ArrayList<Article>();
public void add(Article a) {
detailList.add(a);
}
public ArrayList<Article> getArticleList(){
return detailList;
}
}

现在这可以按预期工作:

Invoice inv = new Invoice();
inv.add(a1);
inv.add(a2);
inv.add(a3);
ArrayList<Article> temp = inv.getArticleList();
for (int i=0;i<temp.size();i++){
System.out.println(temp.get(i).getCod());
}

它在控制台上打印:

10
20
30

关于java - 自动生成类内的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19776523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com