【问题标题】:Use kotlin lib in java call fun在 java call fun 中使用 kotlin 库
【发布时间】:2022-01-25 11:10:44
【问题描述】:

我在android studio项目中使用了kotlin写的一个库

    class Builder<S> private constructor(val dateSelector: DateSelector<S>) {
     var calendarConstraints: CalendarConstraints? =null
    /** Sets the first, last, and starting [Month].  */
    fun setCalendarConstraints(bounds: CalendarConstraints?): Builder<S> {
        calendarConstraints = bounds
        return this
    }
    /** Creates a [MaterialDatePicker] with the provided options.  */
     companion object {            
        /**
         * Used to create a Builder that allows for choosing a single date in the `MaterialDatePicker`.
         */
        fun datePicker(): Builder<Long?> {
            return Builder(SingleDateSelector())
        }
    }
}

当我想在 java 类活动中使用 setCalendarConstraints 时

MaterialDatePicker.Builder.Companion.datePicker().setTitleText(R.string.selectdate).setCalendarConstraints(constraints).build();

调用 setCalendarConstraints 时出现此错误

模棱两可的方法调用。 Builder 中的 setCalendarConstraints (CalendarConstraints) 和 setCalendarConstraints (CalendarConstraints) 生成器匹配

我可以在java中拆分默认设置器和乐趣吗?

【问题讨论】:

    标签: java android kotlin


    【解决方案1】:

    如果您有权访问该库,我想只有以下替代选项可以提供帮助,修改该库的源代码:

    1. calendarConstraints 属性设为私有。

    2. calendarConstraints 属性重命名为其他名称。

    3. setCalendarConstraints 方法重命名为其他名称。

    4. setCalendarConstraints 方法添加一些额外的参数。

    5. calendarConstraints属性添加@JvmField注解:

      @JvmField
      var calendarConstraints: CalendarConstraints? = null
      

    或者您可以在使用此库的项目中使用 Kotlin 而不是 Java

    【讨论】:

    • 我将 librery 作为来自 GitHub 的包添加到项目中。此外,这个问题可能在其他地方。 Java 中的解决方案对我来说更重要。
    • 如果我没记错的话,除了我的建议之外,Java 中没有针对这种情况的解决方案。也许有使用java反射的解决方法,但我不确定。
    猜你喜欢
    • 1970-01-01
    • 2021-08-16
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 2018-02-16
    • 2018-02-16
    相关资源
    最近更新 更多