Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/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
Java Can';t在Kotlin中创建Spring数据事件侦听器_Java_Spring_Spring Data_Kotlin_Spring Data Neo4j 4 - Fatal编程技术网

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
            }
        }
    }
}