对于我在类中处理的一个项目,我需要创建一个ArrayList,其中包含未定义数量的从属对象(类的示例),这些对象都具有不同的名称、Id等。然后,我必须调用其中一个对象,例如,更改其Id(使用类似adherent.setId(newId)
的方法)。
但是,按照我的代码设置方式,所有新示例的调用都是相同的,并且因为未定义从属者的数量,所以不能简单地使用类似
Adherent adherent1 = new Adherent(lastName, firstName, currentYear, currentId);
Adherent adherent2 = new Adherent(lastName, firstName, currentYear, currentId);
Adherent adherent3 = new Adherent(lastName, firstName, currentYear, currentId);
等等......用于它们中的每一个。
这是我目前使用的方法
public static List<Adherent> createAdherent(int currentId, int currentYear, List<Adherent> adherentList) {
Scanner sc = new Scanner(System.in);
System.out.println("Please enter the last name of the new adherent");
String lastName = sc.next();
System.out.println("Please enter the first name of the new adherent");
String firstName = sc.next();
Adherent adherent = new Adherent(lastName, firstName, currentYear, currentId);
adherentList.add(adherent);
adherent.setName(lastName);
adherent.setFirstName(firstName);
adherent.setYearAd(currentYear);
adherent.setId(currentId);
System.out.println(adherent.toString());
return adherentList;
}
我想知道是否有一种方法可以使用它们的名称以外的东西(可能是一个变量)来调用它们(使用.set
或.get
方法),或者是否有一种方法可以在我的createAdherent()
方法中以不同的方式命名它们。我已经搜索了几天,似乎找不到答案。
4条答案
按热度按时间cnwbcb6i1#
你的方法很有趣。我会考虑一些重构。
首先,你要接收一个List,向它添加一个条目,然后返回那个List,返回是没有意义的,因为你已经在向列表添加条目了。
给定
createAdherent(int currentId, int currentYear, List<Adherent> adherentList)
的签名,您将传入一个List。public Adherent createAdherent(int currentId, int currentYear)
(如果必须,则为静态)你可以这样称呼它:
adherents.add(createAdherent(1, 2000))
其中adherents是您传入的Adherent列表。无需获取List或返回List,只需返回要添加到List的对象。
tcbh2hod2#
据我所知,您希望通过名称调用一个项目并更改其ID,但可能有多个项目具有相同的名称。
注意:我认为如果您在构造函数本身中传递'lastName'和'firstName',它应该更新变量值,而不需要调用.setName(lastName)和.setFirstName(firstName)
回到你的问题,我相信如果你是通过名字得到obj来改变id,知道可能有不止一个名字相同,我认为这不应该发生。我相信可以这样做:
或者全部使用。
希望这有帮助:)
y53ybaqx3#
你的函数 * createAdhendent * 最好命名为 * createAdhendentInList *,因为你在参数中给予了要更新的列表,而且不需要返回列表,正如已经说过的,它已经完成了。
我相信您的问题是关于为每个示例拥有唯一ID的更经典的问题。
在任何情况下,您需要一些其他函数来检索粘附体,如:
高温加热
wgx48brx4#
示例不是所谓的adherent1、adherent2等。这些只是变量的名称,它们与对象的示例只有松散的关联。
您可以从
adherentList.get(0)
等列表中获取示例。您可以通过
for (adherent : adherentList) ...
这样的构造来处理所有这些对象。也许有更好的方法来组织数据,但这需要更多关于如何处理数据的信息。