所以我现在正在为我的java类做一个项目。
以下是我的主要观点:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
public class Main {
public static void main(String args[]){
Entrepot Entrepot1=new Entrepot(3);
Rangee Rangee1=new Rangee(2);
Rangee Rangee2=new Rangee(3);
Rangee Rangee3=new Rangee(3);
/*for(int i=0;i<Entrepot.getNbRangee();i++) {
Entrepot.addRangee(Rangee.getID()==i);
}*/
for(int i=0; i<Entrepot.getNbRangee(); i++) {
Entrepot.addRangee(Rangee.getID());
}
Meuble meuble = new Meuble("Table",new Lot[]{new Lot(new Vis(200,10),1),new Lot(new Planche(1000,500),3)},"Salon",3);
meuble.afficherMeuble();
System.out.println(Rangee1.getID());
System.out.println(Rangee2.getID());
System.out.println(Rangee3.getID());
System.out.println(Entrepot.getNbRangee());
System.out.println(Entrepot.getListeRangee());
}
}
每次用户创建一个对象“range”时,我希望它自动添加到entrepot类中的listerangee列表中。
正如你在我的main上看到的,我尝试了一个for循环,它在其中添加了每个具有i id的range,但没有成功。
我是个新手,如果你能帮我,我会非常感激的!
谢谢!
Range.java文件
import java.util.ArrayList;
import java.util.List;
public class Rangee {
private static int count=0;
private static int ID;
private int longueur;
private int largeur=1;
private int hauteur=1;
private int volume= longueur*largeur*hauteur;
private ArrayList<Lot> listeLot= new ArrayList<Lot>();
public Rangee(int longueur) {
this.longueur=longueur;
if(ID<Entrepot.getNbRangee()) {
ID=count++;
}
else {
System.out.println("NON");
}
}
public static int getID() {
return ID;
}
public void setID(int iD) {
if(ID>Entrepot.getNbRangee()) {
System.out.println("Le nombre maximum de rangee est de "+ Entrepot.getNbRangee());
}
ID = iD;
}
转口.java
import java.util.ArrayList;
import java.util.List;
public class Entrepot {
private static int nbRangee;
static ArrayList<Rangee> listeRangee= new ArrayList<Rangee>(nbRangee);
public Entrepot(int nbRangee) {
this.nbRangee=nbRangee;
}
public static boolean addRangee( Rangee newRangee ) {
listeRangee.add(newRangee);
return true;
}
public static int getNbRangee() {
return nbRangee;
}
public void setNbRangee(int nbRangee) {
this.nbRangee = nbRangee;
}
public static ArrayList<Rangee> getListeRangee() {
return listeRangee;
}
public void setListeRangee(ArrayList<Rangee> listeRangee) {
this.listeRangee = listeRangee;
}
}
2条答案
按热度按时间oxosxuxt1#
我认为最简单的方法是间接使用range的构造函数作为entrepot的类方法。
在entrepot类中,可以添加以下内容(如果需要,可以使用参数):
那么在main中,就不必调用构造函数,而是调用以下方法:
至于每个用户的id,您可以使用以下解决方案:
private static atomicinteger id\u generator=new atomicinteger(1000);
mqkwyuun2#
制造
Rangee
的构造函数私有并公开一个静态工厂方法来构建的新示例Rangee
会自动添加到Entrepot
.如果id低于
Entrepot.getNbRangee()
内部createRangee
方法并返回null/throw error(如果发生这种情况,而不是打印消息)。那么你的主要方法是:
其他一切都一样。
请注意
createRangee
可以在中创建Entrepot
而不是Rangee
,但是Rangee
的构造函数只能由Entrepot
. 这意味着:1/使构造函数具有默认访问权限(没有public/private)并将两个类放在同一个包中(同一个包中的其他类仍然可以创建Rangee
示例)或2/移动Rangee
类内部Entrepot
作为静态类并保持构造函数私有。说了这么多,下面是我将如何在Entrepot
带包专用Rangee
施工单位:请注意,我已经删除了一些静态这里和那里,因为他们现在更有意义。请注意,您可以设置
rangee
的id到listeRangee.size()
内部createRangee
. 您以前的实现更新了一个静态变量,并为所有3个范围打印了3getid()`,我怀疑这不是你想要的。
主要方法是: