创建一个函数 具有未知变量类型的函数

Creating a function a function with an unknown variable type

我正在编写一个小游戏来处理和使用自定义 类 来定义出现在屏幕上的各种对象。

我这里的东西真的不是问题,这只是一直困扰着我的东西。

取此代码:

void blitBalckHoles () {  //idealy, it would be nice to have both of these as one function, however I don't know how to make it so that it could accept any variable type as a parameter
  for (BlackHole blackHole : blackHoles) {blackHole.blit();}
}
void blitStars() {
  for (Star star : stars) {star.blit();}
}

基本上我的问题在第一行代码中有注释。 无论如何我可以做一个函数来 blits 参数来决定它是什么类型?

您要找的是 接口

您将定义一个包含 blit() 函数的 Blittable 接口:

interface Blittable{
  public void blit();
}

然后您将通过使用 implements 关键字并实现 blit() 函数来创建 classes implement 该接口:

class Star implements Blittable{
  public void blit(){
    println("Star blitting.");
  }
}

class BlackHole implements Blittable{
  public void blit(){
    println("Black Hole blitting.");
  }
}

然后您可以将 Star 和 BlackHole 的实例作为 Blittable 引用传递。由于任何实现 Blittable 接口的 class 都必须定义一个 blit() 函数,因此您可以在任何 Blittable 引用上调用 blit() 函数:

for(Blittable b : blitters){
   b.blit();
}

把它们放在一起,看起来像这样:

void setup(){

  Star star = new Star();
  BlackHole blackHole = new BlackHole();

  ArrayList<Blittable> blitters = new ArrayList<Blittable>();
  blitters.add(star);
  blitters.add(blackHole);

  for(Blittable b : blitters){
    b.blit();
  }
}

interface Blittable{
  public void blit();
}

class Star implements Blittable{
  public void blit(){
    println("Star blitting.");
  }
}

class BlackHole implements Blittable{
  public void blit(){
    println("Black Hole blitting.");
  }
}

请注意,您可能还只想使用 JavaScript 模式,因为那样输入不那么严格。