创建一个函数 具有未知变量类型的函数
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 模式,因为那样输入不那么严格。
我正在编写一个小游戏来处理和使用自定义 类 来定义出现在屏幕上的各种对象。
我这里的东西真的不是问题,这只是一直困扰着我的东西。
取此代码:
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 模式,因为那样输入不那么严格。