首页 > 解决方案 > 如何通过传递类型来创建类的实例

问题描述

我希望能够说创建此类的一个实例并给出一个类型,然后代码可以实例化该类的一个新实例。

fun maker(type: Class<Animal>): Animal {
    if(type == Class<Dog>) {
       return Dog()
    } 
    else if (type == Class<Cat>) {}
    ...
}

有什么好方法可以做到这一点?

标签: kotlin

解决方案


如果它们都有零参数构造函数,你可以这样做:

fun maker(type: Class<Animal>): Animal {
    return type.newInstance()
}

您可以让它返回传入的类型以获得更多功能:

fun <T: Animal> maker(type: Class<T>): T {
    return type.newInstance()
}

推荐阅读