0
Я пишу свой код в eclipse, у меня есть класс под названием платформа и подклассы, такие как redplatform, blueplatform.I хочу создать arraylist, который может хранить как blueplatform, так и redplatform, я сделал это до сих пор.Java Polymorphism с ArrayLists
ArrayList<Platform> p = new ArrayList<Platform>();
private void createPlatform() {
switch (platform) {
case 0:
p.add(new GreenPlatform(x, y));
case 1:
p.add(new RedPlatform(x, y));
case 2:
p.add(new BluePlatform(x, y));
case 3:
p.add(new MagentaPlatform(x, y));
case 4:
p.add(new GrayPlatform(x, y));
}
repaint();
@Override
public void paintComponent(Graphics g) {
// TODO Auto-generated method stub
super.paintComponent(g);
for (int i = 0; i < p.size(); i++) {
p.get(i).paint(g);
}
}
В каждом классе, он имеет метод рисования, который задает цвет на что-то другое и рисует его , но сейчас все они являются серыми. Это расстраивает.
Я вижу, я делал эту ошибку! Но как это влияет на программу? Разве это не просто разрыв из цикла for? Поскольку int-платформа имеет только один int, один из случаев будет выполняться, а другие не будут, не так ли? – yuzhengwen
@yuzhengwen 'switch' работает следующим образом: как только случай согласован, и вы его не сломаете, каждый оператор после этого совпадающего случая будет выполнен, даже если они находятся в разных случаях. Например, если случай 2 соответствует, и вы не используете break, все в случае 2, случай 3, случай 4 будет выполнен. Подробнее читайте здесь: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html – tianz
Вижу, спасибо за помощь! – yuzhengwen