我在抽象课上是这样做的
@Autowired
lateinit var fileContract: FileContract
有错误
kotlin.UninitializedPropertyAccessException: lateinit property fileContract has not been initialized
但这同样适用于普通班级。为什么?
在Redis config类中,我有一个保存Redis端口的属性。
@Value("\${redis.port:63799}")
lateinit var port: Integer
init {
this.redisServer = RedisServer(port.toInt())
}
当我运行我的代码时,我会得到以下错误:
kotlin.UninitializedPropertyAccessException: lateinit property port has not been initialized
以下代码是有效的Kotlin代码:
abstract class A {
protected lateinit var v: X
abstract fun f(): X
class SubA : A() {
override fun f(): X {
return SubX()
}
init {
v = f()
}
}
}
它定义了一个具有lateinit var字段的抽象类和一个设置该字段值的抽象方法。这背后的原因是以后可能会再次调用该方法,
如果我使用一个主构造函数来初始化一个属性,它的setter将不会被调用:
open class Foo(open var bar: Any)
open class Baz(bar: Any) : Foo(bar) {
override var bar: Any
get() = super.bar
set(_) = throw UnsupportedOperationException()
}
...
Baz(1) // works, no setter is called
这也行得通:
open class Foo(bar: Any) {
op
我的应用程序在使用spring和kotlin时遇到了问题。一开始,我有一个控制器和一个服务,如下所示:
以下是该服务:
@Service
class StuffService {
@Inject
lateinit var environment : Environment
fun doStuff() = [HERE FUNCTION CODE USING environment VARIABLE]
}
下面是控制器:
@RestController
class StuffController {
@Inject
lateinit var stuf
我正在学习spring data,因为我也在学习kotlin,所以我决定在春季学习期间与kotlin合作。因此,我想问一下,我们如何在kotlin中实现setter依赖注入?在Java中,我们可以这样做,如下所示。
@Component
public class StudentDaoImp {
public DataSource dataSource;
public JdbcTemplate jdbcTemplate;
public DataSource getDataSource() {
return dataSource;
}
如果我的类将从文件src/main/resources/application.properties读取,我正在尝试创建一个spring引导应用程序。但由于某些原因,我无法让我的Kotlin处理这些值(返回一个lateinit property url has not been initialized )。
src/main/resources/application.properties (注意,没有显式地在任何地方调用?)
spring.datasource.url=someUrl
spring.datasource.username=root
spring.datasource.pass
在为fragment创建实例时,我在Kotlin中为lateinit变量赋值,然后在fragment的oncreateview方法中使用该变量。它工作得很好,但有时它返回kotlin.UninitializedPropertyAccessException,我的应用程序被关闭。我不知道是什么时候发生的,我已经检查了多个场景。但它从来都不起作用。
这里我添加了我的代码,
private lateinit var mViewModel: SearchViewModel
companion object {
fun getInstance(activity: Activity?): Se
我在我的应用程序中使用kotlin和ObjectBox。我的对象框实体看起来像这样
@Entity
class Order {
@Id var id: Long = 0
lateinit var customer: ToOne<Customer>
}
@Entity
class Customer {
@Id var id: Long = 0
@Backlink
lateinit var orders: List<Order>
}
但是当我使用@Parcelize时,包裹中的属性将被忽略。如何在使用@Parcelize的同时仍
使用cursor.The光标获取android持有的图像需要授权到外部存储。如果AndroidOS为6.0或更高版本,且未获得授权权限,则将终止申请。如果获得权限,则需要进行关闭游标的处理。
如果是Java,最好像下面这样写onStop,除非是Kotlin,否则会引发一个异常。
if (cursor != null )
cursor.close();
kotlin.UninitializedPropertyAccessException: lateinit property cursor has not been initialized
所以我写了初始化游标并完成它。
cursor =
我正在创建一个构建器(用于Java compat),其中context既是私有属性又是公共方法。
private lateinit var context: Context
fun context(appContext: Context) = apply {
context = appContext
}
fun build(): MySdk {
// this::context fails to compile because it cannot differentiate between the
// method `context()` vs property
关于Kotlin中的函数类型,下面给出了异常kotlin.UninitializedPropertyAccessException: lateinit property foo has not been initialized class SomeClass (){
lateinit var foo: (String) -> Int
}
val result : Int = c.foo("hello")
println("result $result") 下面两个代码甚至不能编译 class SomeClass (){
late
对于使用Spring/Kotlin注入bean,我知道两种方法:将其传递给构造函数:
@Service
open class MyService @Autowired constructor(
@Autowired
val myRepository: MyRepository
)
使用'lateinit‘关键字
@Service
open class MyService {
@Autowired
lateinit var myRepository: MyRepository
}
我知道这两部作品,但我想知道哪一部是最好的?有什么问
我正在尝试检查一个lateinit属性是否已经初始化。
在Kotlin1.2中,我们现在有了用于这个的isInitialized方法。当我在声明lateinit属性的类中这样做时,它会工作。但是,当我试图从另一个类调用它时,我会收到以下警告:
此时无法访问“lateinit var foo: Bar”的后备字段。
我的模型类(比方说Person)是用Java编写的
另外两个类(比方说Test1和Test2)是用Kotlin编写的
示例:
class Test1 {
lateinit var person: Person
fun method() {
i
我对Kotlin和Spring Boot很陌生。我试图通过SearchService调用带有初始化构造函数的ServiceClass类,一切都很好,直到是访问SearchService中自动配置的env变量的时候--它会抛出Null指针异常。我假设我必须在SearchService中使用ServiceClass,但是如何在performSearch方法中初始化构造函数和名称/isAlive变量。
@Service
class ServiceClass {
@Autowired
lateinit var env: Environment
fun performSearc
我正在尝试传递IOUFlowIssueTest,但给我的错误是MockNetwork没有初始化,而它已经初始化了。 这是在Corda 4.0上。 class IOUIssueFlowTests {
lateinit var mockNetwork: MockNetwork
lateinit var a: StartedMockNode
lateinit var b: StartedMockNode
@Before
fun setup() {
mockNetwork = MockNetwork(listOf("net.corda
我正面临这个问题,在多模块android项目与刀柄。
kotlin.UninitializedPropertyAccessException: lateinit property repository has not been initialized in MyViewModel
我的模块是
ModuleViewmodel ModuleDataSource 应用程序模块UseCase
‘应用模块’
@AndroidEntryPoint
class MainFragment : Fragment() {
private lateinit var viewModel: MainViewModel
我在Kotlin上有一个Kotlin应用程序。我有一个名为MyModel的模型,只有两个字段:a, b
NotNull验证在a上运行良好,但在b上不起作用,尽管我在b的基础上添加了@valid。
因此,当我在api请求中不传递b时,它不会使模型失效,尽管它是无效的(因为缺少b )。
我真的不知道为什么不管用。如果我删除?以强制非空,那么Jackson将在反序列化模型时抛出异常。因此,我不能使它成为nun空(通过从? b**).中移除)。这是我的模型**。
data class MyModel(
@NotNull(message = "a is mandatory")
late
我正在尝试找到一种在每次测试前设置变量的方法。就像Junit中的@ the方法一样。浏览kotlin-test中的文档,我发现我可以使用interceptTestCase()接口。但不幸的是,下面的代码将触发异常:
kotlin.UninitializedPropertyAccessException: lateinit property text has not been initialized
class KotlinTest: StringSpec() {
lateinit var text:String
init {
"I hope variable is be ini