在Java

时间:2018-12-05 08:54:37

标签: java kotlin operator-overloading

我有一个正在为Kotlin用户开发的库,并且我还支持Java。

我的功能之一是“添加” 看起来类似于

open fun add(element: T, position: Int = elements.size) {
    elements.add(position, element)

    if (!updateUi) return
    if (isUiThread()) notifyItemInserted(position) else throw uiThreadException
}

这很棒,为了使它更酷,我为口语的“添加”功能添加了一个运算符重载功能,如下所示:

open operator fun plus(element: T): Unit = add(element)

问题是当Java用户使用它时,它看起来像一个重复的函数,可能会引起一些混乱

科特琳:

someClass.add(item)
someClass + item

Java:

someClass.add(item);
someClass.plus(item);

在Java版本中,不清楚应该使用哪个版本,我想为Java用户隐藏它。

我尝试使用@JvmName更改名称,但是如果该功能是我希望使用的“开放功能”,则无法使用它,因为如果那样的话,我想让用户可以更改它欲望。

我可以隐藏它吗?如果没有其他解决方案,将不胜感激。

0 个答案:

没有答案