Kotlin:使用对另一个类的getter的方法引用

Kotlin:使用对另一个类的getter的方法引用,kotlin,Kotlin,我有一节课- class ES { var issue: SomeClass? = null } 我需要在另一个类中访问它的getter- class CSS { private val ref: Supplier<SomeClass?> = ES::issue } 类CSS{ 私人val ref:供应商=ES::问题 } 然而,这是行不通的。它抛出了这个错误- Type mismatch. Required: Supplier<SomeClass?>

我有一节课-

class ES {
    var issue: SomeClass? = null
}
我需要在另一个类中访问它的getter-

class CSS {
   private val ref: Supplier<SomeClass?> = ES::issue
}
类CSS{
私人val ref:供应商=ES::问题
}
然而,这是行不通的。它抛出了这个错误-

Type mismatch.
Required: Supplier<SomeClass?>
Found   : KMutableProperty1<ES, SomeClass?>
类型不匹配。
必填项:供应商
找到:KMutableProperty1
有人能告诉我我做错了什么吗?我实际上正在将java代码转换为kotlin

更新

我需要一个ES类getter的静态引用,类似于JAVA,在这里我们可以做->

Function<ES, SomeClass> ref = ES::getIssue;
函数ref=ES::getIssue;

在Kotlin中,不使用Supplier,而是对类型使用函数语法。在这种情况下,
供应商
的等价物将是
()->SomeClass?
(假设ES是一个
对象
,因为您在示例代码中就是这样使用它的):

但是,如果您必须专门使用Supplier,以便可以轻松地与Java代码一起使用,则可以在Supplier实现中包装您的getter引用:

class CSS(/*...*/) {
   private val ref: Supplier<SomeClass?> = Supplier(ES::issue)
}


我不相信有一种方法可以对供应商做到这一点,但我认为您也不能用Java对供应商做到这一点。

我有必要使用ref,它在其他地方被使用,我只是删除了代码的非必要部分。为什么不
private val ref:Supplier=Supplier{es->es.issue
@EpicPandaForce,因为
供应商
不接受争论?这是有道理的,但我会采取完全不同的方法。为什么我要在这里使用供应商。你能解释一下原因吗(在Java版本中)我们应该在这里使用函数,而不是供应商?我知道逻辑上它应该只是一个函数,但getter不接受任何参数,对吗?例如objectName.getField()?我猜objectName不被视为参数?或者函数足够聪明,可以理解吗?不,相同的错误(分别在这两种情况下)->必需:()->someClass?…发现:KmutableProperty1是
ES
一个对象还是一个类?如果它是一个类,你需要使用它的一个实例来引用属性。对于
对象ES
,这个语法对我来说很好:如果它是一个类,我们将一个实例传递给
CSS
,我们可以这样做:ES既不是对象,也不是对象的实例f类。请看问题中的更新。我还将someClass大写为someClass,因此不会引起混淆。是的,谢谢。但出于好奇,你能告诉我为什么在Java版本中,我们使用函数而不是供应商吗?我理解逻辑上它应该是一个函数,但getter不接受任何函数rguments对吗?例如objectName.getField()?我猜objectName不被视为参数?或者函数是否足够聪明,可以理解?供应商没有输入。如果您的getter是类的成员(不是静态的),则需要该类的实例来调用getter。类实例就是输入。
class CSS(/*...*/) {
   private val ref: Supplier<SomeClass?> = Supplier(ES::issue)
}
private val ref: (ES) -> SomeClass? = ES::issue
private val ref: ES.() -> SomeClass? = ES::issue