基于输入运行方法,没有if语句逻辑

时间:2013-11-30 17:39:23

标签: java dispatch

我有一个方法,它接受2个参数:

public void generate(int size, String animal){
      // output a picture of the "animal" on java.swing of size "size"
}

因此动物的可能性是猴子,长颈鹿,狗,猫和老鼠。但是,赋值指定我只能有1个方法,没有if-statements / cases / ternary操作符,没有外部类。因此,在该方法中,我必须创建所有这5种动物:

public void generate(int size, String animal){
      // output picture of Monkey
      // output picture of Giraffe
      // output picture of Dog
      // output picture of Cat
      // output picture of Mouse
}

反过来,我认为我必须只根据输入运行方法的一部分。有没有办法做到这一点?教授的提示是使用“多次发送”,但如果只有一种方法,这怎么可能呢?

2 个答案:

答案 0 :(得分:0)

public interface Animal {
   public void draw(int size);
}

public class Monkey implements Animal {
   public void draw(int size) {
      // ...
   }
}

答案 1 :(得分:0)

由于您不想使用if/else/switch-case,假设每种类型的动物都是一个类,您可以尝试此实现。

public class Test {

static Map<String, Animal> animalTypeMap = new HashMap<String, Animal>();
static {
    animalTypeMap.put("Monkey", new Monkey());
    // put other animals in the map

}

public static void main(String[] args) {

    Test test = new Test();
    test.generate(5, "Monkey");

}

public void generate(int size, String animal) {
    // output picture of Monkey
    Animal animalObj = animalTypeMap.get(animal);
    animalObj.draw(size);
    // output picture of Giraffe
    // output picture of Dog
    // output picture of Cat
    // output picture of Mouse
}

}

interface Animal {
public void draw(int size);
// .....more methods

}

class Monkey implements Animal {

// ...implement methods
@Override
public void draw(int size) {
    System.out.println("Monkey of size " + size + " drawn");

}
// ...more methods
}

// ....more classes implementing animal interface