Java Can';t在Kotlin中创建Spring数据事件侦听器
我尝试创建一个事件侦听器,如下所示:Java Can';t在Kotlin中创建Spring数据事件侦听器,java,spring,spring-data,kotlin,spring-data-neo4j-4,Java,Spring,Spring Data,Kotlin,Spring Data Neo4j 4,我尝试创建一个事件侦听器,如下所示: @Bean open fun beforeSaveEventApplicationListener(): ApplicationListener<BeforeSaveEvent> { return ApplicationListener<BeforeSaveEvent>() { fun onApplicationEvent(event: BeforeSaveEvent) {
@Bean
open fun beforeSaveEventApplicationListener(): ApplicationListener<BeforeSaveEvent>
{
return ApplicationListener<BeforeSaveEvent>()
{
fun onApplicationEvent(event: BeforeSaveEvent)
{
//Do something with event
}
}
}
我做错了什么 不确定您想要实现什么,但一个简单的解决方法是在返回语句中添加
object
关键字:
@Bean
open fun beforeSaveEventApplicationListener(): ApplicationListener<BeforeSaveEvent>
{
return object : ApplicationListener<BeforeSaveEvent>()
{
override fun onApplicationEvent(event: BeforeSaveEvent)
{
//Do something with event
}
}
}
不确定您想要实现什么,但一个简单的解决方法是在返回语句中添加
对象
关键字:
@Bean
open fun beforeSaveEventApplicationListener(): ApplicationListener<BeforeSaveEvent>
{
return object : ApplicationListener<BeforeSaveEvent>()
{
override fun onApplicationEvent(event: BeforeSaveEvent)
{
//Do something with event
}
}
}
不确定您想要实现什么,但一个简单的解决方法是在返回语句中添加
对象
关键字:
@Bean
open fun beforeSaveEventApplicationListener(): ApplicationListener<BeforeSaveEvent>
{
return object : ApplicationListener<BeforeSaveEvent>()
{
override fun onApplicationEvent(event: BeforeSaveEvent)
{
//Do something with event
}
}
}
不确定您想要实现什么,但一个简单的解决方法是在返回语句中添加
对象
关键字:
@Bean
open fun beforeSaveEventApplicationListener(): ApplicationListener<BeforeSaveEvent>
{
return object : ApplicationListener<BeforeSaveEvent>()
{
override fun onApplicationEvent(event: BeforeSaveEvent)
{
//Do something with event
}
}
}
问题在于,您可能会使用一些可能的
beforeSavevent
类。下面是一些模拟的Spring类,向您展示了它们之间的区别(请注意两个beforeSavevent
声明):
因此,您可以确切地看到编译器的要求:
请为beforesavevent
提供一个类型参数,因为它实际上是beforesavevent
可能是您导入了错误的类,并且表示另一个beforesavevent
,或者您导入了正确的beforesavevent
,并且不适合其实际的泛型类型参数需要
另外,由于
ApplicationListener
是一个接口,您在使用后不希望使用()
,因为这意味着您试图调用接口上的构造函数
注意:从IDE的角度提供相关类的声明签名有助于回答您的问题(让它点击查找您正在使用的类,它可能不是您认为的类)。问题是,您可以使用一些可能的
BeforeSavevent
类。下面是一些模拟的Spring类,向您展示了它们之间的区别(请注意两个beforeSavevent
声明):
因此,您可以确切地看到编译器的要求:
请为beforesavevent
提供一个类型参数,因为它实际上是beforesavevent
可能是您导入了错误的类,并且表示另一个beforesavevent
,或者您导入了正确的beforesavevent
,并且不适合其实际的泛型类型参数需要
另外,由于
ApplicationListener
是一个接口,您在使用后不希望使用()
,因为这意味着您试图调用接口上的构造函数
注意:从IDE的角度提供相关类的声明签名有助于回答您的问题(让它点击查找您正在使用的类,它可能不是您认为的类)。问题是,您可以使用一些可能的
BeforeSavevent
类。下面是一些模拟的Spring类,向您展示了它们之间的区别(请注意两个beforeSavevent
声明):
因此,您可以确切地看到编译器的要求:
请为beforesavevent
提供一个类型参数,因为它实际上是beforesavevent
可能是您导入了错误的类,并且表示另一个beforesavevent
,或者您导入了正确的beforesavevent
,并且不适合其实际的泛型类型参数需要
另外,由于
ApplicationListener
是一个接口,您在使用后不希望使用()
,因为这意味着您试图调用接口上的构造函数
注意:从IDE的角度提供相关类的声明签名有助于回答您的问题(让它点击查找您正在使用的类,它可能不是您认为的类)。问题是,您可以使用一些可能的
BeforeSavevent
类。下面是一些模拟的Spring类,向您展示了它们之间的区别(请注意两个beforeSavevent
声明):
因此,您可以确切地看到编译器的要求:
请为beforesavevent
提供一个类型参数,因为它实际上是beforesavevent
可能是您导入了错误的类,并且表示另一个beforesavevent
,或者您导入了正确的beforesavevent
,并且不适合其实际的泛型类型参数需要
另外,由于
ApplicationListener
是一个接口,您在使用后不希望使用()
,因为这意味着您试图调用接口上的构造函数
注意:从IDE的角度提供相关类的声明签名有助于回答您的问题(让它点击查找您正在使用的类,它可能不是您认为的类)。感谢您提供的信息,但它仍然无法编译-在saveevent之前的
编译器报告“需要类型参数”。等效的Java代码运行良好——我只想钩住neo4j节点的save来分配UUID。这可能是Kotlin编译器的问题吗?我想我会把它报告给Jetbrains。我想API希望将BeforeSaveEvent的实例传递给构造函数调用问题是你不知道BeforeSaveEvent的声明,编译器告诉你它有一个泛型类型参数。但是代码没有提供一个。我在另一个答案中写下了详细信息。ApplicationListener
是一个接口,而不是一个类。调用构造函数时,它后面不应该有()
。感谢您提供的信息,但它仍然不会编译-在beforeSavevent
编译器报告“需要类型参数”。等效的Java代码运行良好——我只想钩住neo4j节点的save来分配UUID。可以吗
open class Something {
open fun beforeSaveEventApplicationListener(): ApplicationListener<BeforeSaveEvent> {
return object : ApplicationListener<BeforeSaveEvent> {
override fun onApplicationEvent(event: BeforeSaveEvent) {
//Do something with event
}
}
}
}
class MyEntity {}
open class Something {
open fun beforeSaveEventApplicationListener(): ApplicationListener<BeforeSaveEvent<MyEntity>> {
return object : ApplicationListener<BeforeSaveEvent<MyEntity>> {
override fun onApplicationEvent(event: BeforeSaveEvent<MyEntity>) {
//Do something with event
}
}
}
}