我需要使用java.awt制作50个小球和1个大球。我的一个项目问题是创建许多小球,我尝试使用构造函数来完成它。
这是Sec类中的一个构造函数,用于创建小球:
private Main main;
public Sec(Main main){
this.main=main;
}
这是来自创造大球的第一类:
private Main main;
public First(Main main){
this.main=main;
}
让一切运转的主要课程:
public class Main extends JPanel {
First f = new First(this); // first big ball
Sec s1 = new Sec(this); // first small ball
Sec s2 = new Sec(this); // second small ball
Sec s3 = new Sec(this); // etc
(...)
就像你可以看到上面我分别创建每个对象,我需要制作50个,所以我认为使用ArrayList会更有效率。所以我试过了:
ArrayList<Sec> tab = new ArrayList<Sec>();{
tab.add(object1); // It displays hint "cannot find symbol"
}
这是错误:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: <any>
at project.Main.<init>(Main.java:22)
at Project.Main.main(Main.java:117)
答案 0 :(得分:0)
试试这个:
ArrayList<Sec> secs = new ArrayList<Sec>(50); // Declare this as a class field
在课堂内&#39;构造函数,循环并向每个位置添加新的Sec
实例。
public YourClass()
{
for(int i = 0; i < 50; i++)
secs.add(new Sec(...)); //include whatever valid arguments to Sec constructor
}
答案 1 :(得分:0)
我需要制作50个,所以我认为使用ArrayList会更有效率
ArrayList不会制作对象,但它可以是保留它们的有用位置;
int NUM_BALLS=50;
ArrayList<Sec> balls = Lists.newArrayListWithCapacity(NUM_BALLS);
for (int i=0 ; i<NUM_BALLS ; i++) {
balls.add(new Sec(...));
}
B.T.W。:Sec
是一个有趣的名字,对象应该代表一个球。
答案 2 :(得分:0)
我想这个,
ArrayList<Sec> tab = new ArrayList<Sec>();
tab.add(object1);
应该是
tab.add(s1);
tab.add(s2);
tab.add(s3);
或者使用钻石操作符<>
和Arrays.asList(T...)
List<Sec> tab = new ArrayList<>(Arrays.asList(s1,s2,s3));