在java/kotlin中从父抽象类数组调用子类函数

在java/kotlin中从父抽象类数组调用子类函数,java,kotlin,abstract-class,abstract,Java,Kotlin,Abstract Class,Abstract,我有这个游戏对象的数组列表。我循环遍历arraylist,如果对象的类型是door(游戏对象的子类之一),并且如果其他条件匹配,我想从door类调用一个函数,该类仅在该类中。这可能吗?我正在使用Kotlin,但如果您只懂java,我可能会移植它。您可以将其与智能强制转换结合使用。在java中,您可以编写如下代码: for (GameObject gameObject: GameObjects) { if(gameObject instanceof Door ) { // you can

我有这个游戏对象的数组列表。我循环遍历arraylist,如果对象的类型是door(游戏对象的子类之一),并且如果其他条件匹配,我想从door类调用一个函数,该类仅在该类中。这可能吗?我正在使用Kotlin,但如果您只懂java,我可能会移植它。

您可以将其与智能强制转换结合使用。

在java中,您可以编写如下代码:

for (GameObject gameObject: GameObjects) {
    if(gameObject instanceof Door ) { // you can add your another condition in this if itself
        // your implementation for the door object will come here
    }
}
您可以这样使用:

//Kotlin 1.1
interface GameObject {
    fun age():Int
}

class GameObjectDoor(var age: Int) : GameObject{
    override fun age():Int = age;
    override fun toString():String = "{age=$age}";
}

fun main(args: Array<String>) {
    val gameObjects:Array<GameObject> = arrayOf(
                  GameObjectDoor(1), 
                  GameObjectDoor(2), 
                  GameObjectDoor(3));
    for (item: GameObject in gameObjects) {
        when (item) {
            is GameObjectDoor -> {
                var door = item as GameObjectDoor
                println(door)
                //do thomething with door
            }
            //is SomeOtherClass -> {do something}
        }
    }
}
//Kotlin 1.1
界面游戏对象{
乐趣年龄():Int
}
类GameObjectDoor(变量年龄:Int):GameObject{
覆盖乐趣年龄():Int=age;
重写fun-toString():String=“{age=$age}”;
}
趣味主线(args:Array){
val gameObjects:Array=arrayOf(
门(1),
门(2),
(三);;
用于(项目:gameObjects中的GameObject){
何时(项目){
是GameObjectDoor->{
var door=作为GameObjectDoor的项目
印刷品(门)
//你要把门关上吗
}
//是其他类->{do something}
}
}
}

中的
是指
?而
with
根本不是运算符。是的,它不是
中的
,而是
中的
is