如果我的程序中有这样的行:
fireBalls.add(new Fireball(tileMap).setPosition(20, 20)); // set position is a method of the fireball class
Run Code Online (Sandbox Code Playgroud)
如何在同一行上调用多个这样的方法?
我试过这个:
fireBalls.add(new Fireball(tileMap).setPosition(20, 20).setLeft());
Run Code Online (Sandbox Code Playgroud)
但是这个setLeft()方法不能放在那里,因为它不能在void类型上调用.我不能将它们放在不同的行上,因为我不知道它在fireBalls ArrayList中的索引.
您可以修改Fireball方法,以便返回该类的实例(换句话说return this;)
public Fireball setPosition(int x, int y) {
...
return this;
}
Run Code Online (Sandbox Code Playgroud)
有了这个,打电话给
new Fireball(tileMap).setPosition(20, 20)
Run Code Online (Sandbox Code Playgroud)
将返回最近创建的实例,以便您可以setLeft()从该实例调用.你也可以实现它setLeft().
public Fireball setLeft() {
...
return this;
}
Run Code Online (Sandbox Code Playgroud)
看起来你正试图过于简洁,并且在这个过程中可能会让自己陷入困境.您不需要知道ArrayList索引来设置要添加的Fireball对象.您只需要引用该对象,您可以通过创建本地Fireball变量,设置它,然后将其添加到ArrayList来轻松实现.
为什么不简单地做:
Fireball fireball = new Fireball(tileMap);
fireball.setPosition(20, 20);
fireball.setLeft();
fireBalls.add(fireball);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10734 次 |
| 最近记录: |