java - Java 3rd party库要求使用List参数,但不接受Kotlin的列表或数组

标签 java kotlin

我使用一些用Java编写的第三方库,该库具有使用以下方法的类:

    // D is generic type
    public void addSegments(D[] segmentData) {
        getControllerComponent().addSegments(segmentData);
    }

    public void addSegments(List<D> segmentData) {
        getControllerComponent().addSegments(segmentData);
    }

我正在使用Kotlin,在我的情况下,D类型是Long,并且我试图设置Long的列表,
val list: List<Long> = listOf(SportHandler.AMERICAN_FOOTBALL, SportHandler.FOOTBALL)
top_matches_segmented.addSegments( list )

但是不断出错:
None of the following functions can be called with the arguments supplied: public open fun addSegments(p0: (Nothing..Array<out Nothing!>?)): Unit defined in xxx.SegmentedControl public open fun addSegments(p0: (Nothing..List<Nothing!>?)): Unit defined in xxx.SegmentedControl
我也尝试提供多个Longs,但没有成功。

如何为该方法提供Longs列表以使此代码起作用?

谢谢!

最佳答案

我的错误是我没有将 View 引用为SegmentedControl<D>,并且编译器假定它的类型为SegmentedControl<Nothing>。以下行解决了该问题:

(top_matches_segmented  as SegmentedControl<Long>).addSegments( list )

关于java - Java 3rd party库要求使用List参数,但不接受Kotlin的列表或数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56192503/

相关文章:

java - 处理错误 : badly formed character constant (expecting quote, 得到 h)

java - 没有显式强制转换的通用集合编译错误 - 为什么?

java - Kotlin + Spring Boot,找不到 beans

java - 所有 Activity 中都可用的选项菜单

android - 哪个是组合多个 LiveData 的更好方法 : using MediatorLiveData or switchMap?

java - 权限拒绝 : starting Intent { act=android. media.action.IMAGE_CAPTURE cmp=android/com.android.internal.app.ResolverActivity }

java - 我无法在 Eclipse 中运行这个 java 文件

Java:Chronicle Map 是否支持不同的值类别?

android - 如果滑动速度足够快,则不会调用 MotionLayout.TransitionListener

kotlin 中的 Android 应用程序不断崩溃