Types 函数参数类型匹配问题
IntelliJ向我抛出了以下错误,但据我所知,没有问题 最小示例 该函数有三种实现。其中一个接受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
字符串
。我给它的是一根绳子。怎么了
我试过:
- 使缓存无效并重新启动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
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