Kotlin 错误:'public' 函数公开其 'public/*package*/' 返回类型参数
我是Kotlin的新手,并试图用这种语言编写一些项目。我正在使用Java库并从项目中的库中扩展类,并且我看到此错误消息。
'public' function exposes its 'public/*package*/' return type argument FooSettings
我知道问题是,但我不确定如何在Kotlin中修复它,因为我仍在尝试熟悉Kotlin。我可以看到Kotlin很聪明,只是试图返回扩展的类型。然而,问题是只有包是公共的,这意味着如果在我的Kotlin项目中,我无法访问。FooSettings
FooSettings
我做了一些关于Kotlin泛型和使用的研究,但我无法解决这个问题。in
out
在我的 Kotlin 项目中,是否可以执行任何解决方法来修复我看到的错误?
代码片段
这是 Java 库类的示例:请注意,我无法更改库的实现。我必须使用这个库,并在 Kotlin 中扩展它。
在我看来,Java库是这样编写的,并期望它被覆盖,这似乎很奇怪,但这是另一天的问题。
import java.util.Collections;
import java.util.List;
public abstract class ClassA {
public List<FooBuilder<?>> getBuilder(Foo foo) {
return Collections.emptyList();
}
}
public class Foo {
}
public abstract class FooBuilder<U extends FooBuilder.FooSettings> {
// implementation of Class
abstract static class FooSettings {
// implementation of Class
}
}
通常,Java类会像这样重写该方法:
import java.util.List;
public class MyJavaClassA extends ClassA {
@Override public List<FooBuilder<?>> getBuilder(final Foo foo) {
// implementation
}
}
但是我试图用Kotlin编写,这样它看起来像:提醒一下,这个Kotlin依赖于Java库,并且无法访问包公共类。
class MyKotlinClassA : ClassA() {
override fun getBuilder(foo: Foo): MutableList<FooBuilder<*>> {
// implementation
}
}
这会导致错误
'public' function exposes its 'public/*package*/' return type argument FooSettings