You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin抽象工厂模式创建对象报错:Unexpected tokens,求解决

Kotlin抽象工厂模式报错解决:Unexpected tokens (use ';' to separate expressions on the same line)

问题原因

你在main函数里的对象创建语法完全错误。Kotlin中声明变量并实例化对象的正确格式是:

  • 隐式推导类型:val 变量名 = 构造函数()
  • 显式指定类型:val 变量名: 类型 = 构造函数()

而你写成了val samsungMobilePhone: Samsung(),把类型声明和构造调用混在一起,编译器无法识别,所以抛出语法错误。

修复后的完整代码

object AAbstractFactoryDesignPattern{

internal interface IAndroid{
    fun GetModelDetails(): String
}

internal interface IiOS{
    fun GetModelDetails(): String
}

internal interface IMobile{
    fun GetAndroidPhone() : IAndroid
    fun GetiOsPhone() : IiOS
}

internal class SamsungGalaxy : IAndroid{
    override fun GetModelDetails(): String {
        return "Model: Samsung Galaxy - RAM: 2GB - Camera: 13MP"
    }
}

internal class IphoneFour: IiOS{
    override fun GetModelDetails(): String {
        return "Model: Iphone 4 - RAM: 1GB - Camera: 12MP"
    }
}

internal class Samsung : IMobile{
    override fun GetAndroidPhone(): IAndroid {
        return  SamsungGalaxy()
    }

    override fun GetiOsPhone(): IiOS {
        return IphoneFour()
    }
}


internal class MobileClient(factory: IMobile){
    var androidPhone: IAndroid
    var iOSPhone: IiOS
    fun GetAndroidPhoneDetails(): String{
        return  androidPhone.GetModelDetails()
    }
    fun GetIOSPhoneDetails(): String{
        return  iOSPhone.GetModelDetails()
    }
    init {
        androidPhone = factory.GetAndroidPhone()
        iOSPhone = factory.GetiOsPhone()
    }

}


@JvmStatic
fun main(args : Array<String>){
    // 修复后的对象创建语法
    val samsungMobilePhone = Samsung()
    val samsungClient = MobileClient(samsungMobilePhone)
    println(samsungClient.GetAndroidPhoneDetails())
    println(samsungClient.GetIOSPhoneDetails())
}
}

额外建议(非强制,符合Kotlin社区规范)

Kotlin通用命名规范能让代码更易读:

  • 函数名用小驼峰:比如把GetModelDetails改成getModelDetails
  • 接口名通常不用I前缀:比如IAndroid可改为Android,IMobile改为MobileFactory(更清晰体现抽象工厂的角色)
  • 类名保持大驼峰(你这部分符合规范)

内容的提问来源于stack exchange,提问作者Abisheik Meenakshi Sundaram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:55:32