Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Types 函数参数类型匹配问题_Types_Kotlin - Fatal编程技术网

Types 函数参数类型匹配问题

Types 函数参数类型匹配问题,types,kotlin,Types,Kotlin,IntelliJ向我抛出了以下错误,但据我所知,没有问题 最小示例 该函数有三种实现。其中一个接受字符串。我给它的是一根绳子。怎么了 我试过: 使缓存无效并重新启动IntelloJ 通过/gradlew build + :compileKotlin e:/home/ruben/workspace/campingmanager/src/main/kotlin/hello/Application.kt:(27,22):使用提供的参数无法调用以下函数: public open-fun-execu

IntelliJ向我抛出了以下错误,但据我所知,没有问题

最小示例

该函数有三种实现。其中一个接受
字符串
。我给它的是一根绳子。怎么了

我试过:

  • 使缓存无效并重新启动IntelloJ
  • 通过
    /gradlew build
+

:compileKotlin
e:/home/ruben/workspace/campingmanager/src/main/kotlin/hello/Application.kt:(27,22):使用提供的参数无法调用以下函数:
public open-fun-execute(sql:String!):在org.springframework.jdbc.core.jdbc模板中定义的单元
public open-fun-execute(操作:ConnectionCallback!):(?..???)在org.springframework.jdbc.core.jdbc模板中定义
public open-fun-execute(action:StatementCallback!):(?..????)在org.springframework.jdbc.core.JdbcTemplate中定义
e:/home/ruben/workspace/campingmanager/src/main/kotlin/hello/Application.kt:(28,22):使用提供的参数无法调用以下函数:
public open-fun-execute(sql:String!):在org.springframework.jdbc.core.jdbc模板中定义的单元
public open-fun-execute(操作:ConnectionCallback!):(?..???)在org.springframework.jdbc.core.jdbc模板中定义
public open-fun-execute(action:StatementCallback!):(?..????)在org.springframework.jdbc.core.JdbcTemplate中定义
:compileKotlin失败
失败:生成失败,出现异常。
*出了什么问题:
任务“:compileKotlin”的执行失败。
>编译错误。有关更多详细信息,请参阅日志
*尝试:
使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。
构建失败
总时间:8.113秒
  • 获取最新的Kotlin版本1.0.2-1
Kotlin版本:org.jetbrains.Kotlin:Kotlin标准库:1.0.2

Kotlin插件版本:1.0.2-1-release-IJ145-20


IntelliJ版本:2016.1.3

这里的问题在于
jdbcTemplate
——它可以为空,因为它可以从其他线程更改。 若要修复编译错误,应替换对此的调用:
jdbcTemplate!!。执行(“删除表客户,如果存在”)

关于不清楚的错误消息存在一个问题:


对于这种情况,最好使用
lateinit
。(有关更多信息,请参阅。)

这里的问题在于
jdbcTemplate
——它可以为空,因为它可以从其他线程更改。 若要修复编译错误,应替换对此的调用:
jdbcTemplate!!。执行(“删除表客户,如果存在”)

关于不清楚的错误消息存在一个问题:


对于这种情况,最好使用
lateinit
。(有关更多信息,请参阅。)

检查
丑陋,相反,我建议这两种方法

使用专门为DI框架添加的
lateinit

class Database {
    @Autowired
    private lateinit var jdbcTemplate: JdbcTemplate;

    fun initCustomerDatabase() {
        jdbcTemplate.execute("DROP TABLE customers IF EXISTS")
    }
}
缺点:对
jdbcTemplate
的每次调用进行额外的运行时检查。 缺点:
jdbcTemplate
是可变的

使用构造函数注入:

class Database @Autowired constructor(val jdbcTemplate: JdbcTemplate) {
    fun initCustomerDatabase() {
        jdbcTemplate.execute("DROP TABLE customers IF EXISTS")
    }
}
优点:
jdbc模板
不可变 优点:没有运行时检查

在spring 4.3中,即使没有
@Autowired构造函数
,您也可以编写以下代码,例如:

class Database(val jdbcTemplate: JdbcTemplate) {
    fun initCustomerDatabase() {
        jdbcTemplate.execute("DROP TABLE customers IF EXISTS")
    }
}

就我个人而言,我使用构造函数注入,因为它对测试非常有用。

使用
检查丑陋,相反,我建议这两种方法

使用专门为DI框架添加的
lateinit

class Database {
    @Autowired
    private lateinit var jdbcTemplate: JdbcTemplate;

    fun initCustomerDatabase() {
        jdbcTemplate.execute("DROP TABLE customers IF EXISTS")
    }
}
缺点:对
jdbcTemplate
的每次调用进行额外的运行时检查。 缺点:
jdbcTemplate
是可变的

使用构造函数注入:

class Database @Autowired constructor(val jdbcTemplate: JdbcTemplate) {
    fun initCustomerDatabase() {
        jdbcTemplate.execute("DROP TABLE customers IF EXISTS")
    }
}
优点:
jdbc模板
不可变 优点:没有运行时检查

在spring 4.3中,即使没有
@Autowired构造函数
,您也可以编写以下代码,例如:

class Database(val jdbcTemplate: JdbcTemplate) {
    fun initCustomerDatabase() {
        jdbcTemplate.execute("DROP TABLE customers IF EXISTS")
    }
}

就我个人而言,我使用构造函数注入,因为它对测试非常有用。

您是否尝试过从命令行构建,即gradle、使idea缓存无效并重新启动?您使用的Kotlin编译器版本是什么?你使用的Kotlin插件版本是什么想法?尝试了你的建议并更新了我的问题。没有luckCan您可以包含代码而不是屏幕截图,这是可能的最小失败示例吗?可能您正在显示您认为存在问题的内容,但没有显示足够的内容以便我们看到问题。请将代码放入导致问题的最小函数中,并显示更多内容。@JaysonMinard Done您是否尝试过从命令行生成,即gradle,使idea缓存无效并重新启动?您使用的Kotlin编译器版本是什么?你使用的Kotlin插件版本是什么想法?尝试了你的建议并更新了我的问题。没有luckCan您可以包含代码而不是屏幕截图,这是可能的最小失败示例吗?可能您正在显示您认为存在问题的内容,但没有显示足够的内容以便我们看到问题。请将代码放入导致问题的最小函数中,并显示更多内容。@JaysonMinard done